链式栈——在线性表表头操作的一种存储结构还是在线性表表尾操作的一种结构?
2014-10-14 21:32
218 查看
#include<stdio.h> #include<stdlib.h> typedef struct SNode { int data; struct SNode *next; }SNode,*LinkStack; LinkStack top; LinkStack PushStack(LinkStack top,int x) //入栈 { LinkStack s; s=(LinkStack)malloc(sizeof(SNode)); s->data=x; s->next=top; top=s; return top; } LinkStack PopStack(LinkStack top) //退栈 { LinkStack p; if(top!=NULL) { p=top; top=top->next; free(p); printf("退栈已完成\n"); return top; } else printf("栈是空的,无法退栈!\n"); return 0; } int GetStackTop(LinkStack top) //取栈顶元素 { return top->data; } bool IsEmpty()//bool取值false和true,是0和1的区别,bool只有一个字节,BOOL为int型,bool为布尔型 { return top==NULL ? true:false; } void Print() { SNode *p; p=top; if(IsEmpty()) { printf("The stack is empty!\n"); return; } while(p) { printf("%d ", p->data); p=p->next; } printf("\n"); } void main() { int x,a,b; char m; do { printf("\n"); printf("###############链栈的基本操作##################\n"); printf("××××××××1.置空栈××××××××××\n"); printf("××××××××2.进栈×××××××××××\n"); printf("××××××××3.退栈×××××××××××\n"); printf("××××××××4.取栈顶元素××××××××\n"); printf("××××××××5.退出程序×××××××××\n"); printf("##############################################\n"); printf("\n请选择一个字符:"); scanf("%c",&m); switch(m){ case '1': top=NULL; printf("\n栈已置空!"); break; case '2': printf("\n请输入要进栈的元素个数是:"); scanf("%d",&a); printf("\n请输入要进栈的%d个元素:",a); for(b=0;b<a;b++) { scanf("%d",&x); top=PushStack(top,x); } printf("进栈已完成!\n"); printf("\n输出栈为:"); Print(); break; case '3': printf("\n操作之前的输出栈为:"); Print(); top=PopStack(top); printf("\n操作过后的输出栈为:"); Print(); break; case '4': printf("\n输出栈为:"); Print(); if(top!=NULL) printf("\n栈顶元素是:%d\n",GetStackTop(top)); else printf("\n栈是空的,没有元素!"); break; case '5':break; default: printf("\n输入的字符不对,请重新输入!"); break; } getchar(); }while(m!='5'); }
相关文章推荐
- 线性表链式存储结构一种实现
- 数据结构——线性表——散列存储结构——哈希表知识点总结 原创 2017年05月14日 10:08:40 散列(hashing)是一种重要的存储方法,也是一种常见的查找方法。 基本思想:以结点的
- 线性表链式存储结构基本操作
- bo2-1.cpp 顺序表示的线性表(存储结构由c2-1.h定义)的基本操作(12个)
- 将顺序存储的线性表中所有零元素向表尾集中
- 编写算法,对非递减顺序存储的线性表操作,将表中相等的多余元素删除,变为严格递增
- bo2-5.cpp 带头结点的双向循环链表(存储结构由c2-4.h定义)的基本操作(14个)
- bo2-6.cpp 具有实用意义的线性链表(存储结构由c2-5.h定义)的24个基本操作
- 一种理想的在关系数据库中存储树型结构数据的方法 - Just do it - 博客园
- 队列的链式存储结构与操作
- 单链表的存储结构及其基本操作
- 一种理想的在关系数据库中存储树型结构数据的方法
- 一种理想的在关系数据库中存储树型结构数据的方法
- IBM AIX存储层结构及操作命令实现
- 基于哈希表构建高效 矩阵存储结构--矩阵的一种存储方法 哈希矩阵。
- 如果将教师和学生的数据存储在同一种数据结构中。教师的数据包括编号、姓名、职业和职
- bo2-4.cpp设立尾指针的单循环链表(存储结构由c2-2.h定义)的12个基本操作
- 存储过程实现对MS SQL表结构的操作
- bo2-8.cpp 不带头结点的单链表(存储结构由c2-2.h定义)的部分基本操作(9个)
- 一种图存储结构【看了之后你会对图的结构有新的认识】