压栈出栈遍历栈实例代码
发布时间:2020-12-16 07:48:29 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #includestdio.h #includestdlib.h #includemalloc.h typedef struct Node//定义一个链表结构体 { int data; struct Node* pNext; }NODE,*PNODE; type
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #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("出栈成功,出栈元素是%dn",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=val; pNew->pNext=ps->pTop;//每次都把元素压到栈顶 ps->pTop=pNew; } void travelStack(PSTACK ps)//遍历栈 { PNODE p=ps->pTop; while(p!=ps->pBottom) { printf("%d ",p->data); p=p->pNext; } printf("n"); return ; } bool empty(PSTACK ps)//判断栈是否为空 { if(ps->pTop==ps->pBottom) return true; else return false; } //把ps所指向的栈出栈一次,并把出栈的元素存入pVal形参所指向的变量中 //如果出栈失败,返回false,否则,返回true bool popStack(PSTACK ps,int* pVal) { if(empty(ps)) { return false; } else { PNODE r=ps->pTop; *pVal=r->data; ps->pTop=r->pNext; free(r); r=NULL; return true; } } //最后把栈清空。 void clear(PSTACK ps) { if(empty(ps)) { return ; } else { PNODE p=ps->pTop; PNODE q=NULL; while(p!=ps->pBottom) { q=p->pNext; free(p); p=q; } ps->pTop=ps->pBottom; } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |