C++实例:堆栈操作与主函数实现

版权申诉
0 下载量 99 浏览量 更新于2024-06-26 收藏 54KB DOCX 举报
本资源是一份C++编程实例文档,包含两道题目,涉及基本的数据结构——栈(Stack)的实现。栈是一种线性数据结构,遵循后进先出(LIFO)原则,常见于许多计算机科学场景中,如函数调用、表达式求值等。 **第一题**: 该部分展示了如何在C++中定义和使用一个名为`Stack`的自定义类,它包含两个主要操作:压栈(push)和弹栈(pop)。首先,定义了一个内部结构体`Node`,包含一个整型`content`用于存储数据和一个指向下一个节点的指针`next`。`Stack`类的构造函数初始化了顶部指针`top`为`NULL`,表示初始时栈为空。`push`函数接受一个整数`i`,如果分配新节点成功,将数据存入节点,然后将节点连接到链表头部,返回`true`;若内存分配失败,表示栈已满,输出错误消息并返回`false`。`pop`函数检查栈是否为空,非空则弹出顶部元素,将数据赋值给`i`,释放当前节点并返回`true`,否则返回`false`。 在`main`函数中,创建了两个`Stack`对象`st1`和`st2`,分别压入1到5的整数。然后依次弹出`st1`中的元素并打印,当`st1`的栈顶元素不存在时停止。接着尝试从`st1`中继续弹出元素,直到栈为空或遇到`pop`失败为止。最后,遍历并打印`st2`栈的所有元素。 **第二题**: 这个题目没有提供完整的代码,但从描述来看,可能涉及到用户输入和字符数组的处理。代码要求用户输入姓名,并将其存储在一个长度为10的字符数组`name`中。`intage`变量用于存储用户的年龄。由于代码没有显示输入年龄的部分,这部分可能需要用户手动输入或添加适当的`cin`语句来获取年龄。此外,`main`函数中提到"使用名空间std,因此去掉.h扩展名",这意味着在C++11及以上版本中,不需要显式指定`using namespace std`,但为了兼容旧版本,代码中保留了这一提示。 总结来说,这份文档提供了两个C++程序实例,通过`Stack`类展示了栈的基本操作,包括构造、压栈和弹栈,以及如何在实际程序中应用这些概念。对于学习和理解C++数据结构和控制流程,这是一份很好的参考资料。