首页 > 代码库 > 压栈出栈遍历栈实例代码
压栈出栈遍历栈实例代码
#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct Node//定义一个链表结构体 { int data; struct Node* pNext; }NODE,*PNODE; typedef struct Stack//定义一个栈结构体 { PNODE pTop; PNODE pBottom; }STACK,*PSTACK; void initStack(PSTACK); void pushStack(PSTACK,int); void travelStack(PSTACK); bool popStack(PSTACK,int*); void clear(PSTACK ps); int main() { int val; STACK S;//定义一个S变量,该变量有两个参数。一个pTop,一个pBotton initStack(&S);//初始化栈 pushStack(&S,1);//压栈 pushStack(&S,2); pushStack(&S,3); pushStack(&S,4); pushStack(&S,5); travelStack(&S);//遍历输出 if(popStack(&S,&val))//判断是否出栈成功 { printf("出栈成功,出栈元素是%d\n",val); } else { printf("出栈失败\n"); } printf("出栈后遍历输出结果\n"); travelStack(&S);//遍历输出 clear(&S); printf("再次遍历下面为空白,说明清空成功!\n"); travelStack(&S);//遍历输出 return 0; } void initStack(PSTACK ps)//初始化栈,让栈里面的两个元素指向一个节点。 { ps->pTop=(PNODE)malloc(sizeof(NODE)); if(NULL==ps->pTop) { printf("动态内存分配失败\n"); exit(-1); } else { ps->pBottom=ps->pTop; ps->pTop->pNext=NULL;//等价于:ps->pBottom->pNext=NULL;也就是说下一次插入的空间是空的。也就是栈顶元素下一个是空的 } } void pushStack(PSTACK ps,int val)//压栈函数 { PNODE pNew=(PNODE)malloc(sizeof(NODE)); pNew->data=http://www.mamicode.com/val;>压栈出栈遍历栈实例代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。