#include<stdio.h> #include<malloc.h> #include<stdlib.h> //动态栈,由链表实现 ,上面节点指向下面一个节点 //结构体:节点(表示一个元素) typedef struct Node { int data; struct Node * pNext; }NODE,*PNODE; //结构体:栈,栈顶节点的指针,栈底节点指针(栈底指针指向栈底节点的下一个存储空间,因为是初始化的时候分配的空间,此时还没有插入节点)。 typedef struct Stack { PNODE pTop; PNODE pButtom; } STACK,*PSTACK; //为栈分配内存 void init(PSTACK pStack); //压栈 void push(PSTACK pStack,int val); //遍历 void traverse(PSTACK pStack); //弹栈,把出栈的节点的数据存入给定的变量中(给地址) bool pop(PSTACK pStack,int * val); int main(void) { //初始化 STACK stack; init(&stack); //压栈 push(&stack,1); push(&stack,2); push(&stack,3); push(&stack,4); //遍历 traverse(&stack); //弹栈 int a = 0; pop(&stack,&a); printf("\n出栈的元素是:%d\n",a); //遍历 traverse(&stack); getchar(); return 0; } //初始化栈 void init(PSTACK pStack) { //为节点分配内存 pStack->pTop = (PNODE)malloc(sizeof(NODE)); if(pStack->pTop == NULL) { printf("动态内存分配失败!\n"); exit(-1); }else { //栈顶指针和栈底指针相等 ,都指向初始节点 pStack->pButtom = pStack->pTop; pStack->pTop->pNext = NULL; //初始节点的下个节点为NULL } } //压栈 void push(PSTACK pStack,int val) { //创建一个节点 PNODE pNewNode= (PNODE)malloc(sizeof(NODE)); pNewNode->data = val;//数据域赋值 pNewNode->pNext = NULL;//指针域为空(栈顶) pNewNode->pNext = pStack->pTop;//新加入的节点的下一个节点指向原来的栈顶节点 pStack->pTop = pNewNode;//栈顶指针指向新压入的节点 return; } //遍历 void traverse(PSTACK pStack) { PNODE pNode = pStack->pTop; while(pNode != pStack->pButtom) { printf("%d\t",pNode->data); pNode = pNode->pNext; } } //弹栈 bool pop(PSTACK pStack,int * val) { if(pStack->pTop == pStack->pButtom) { return false; } *val = pStack->pTop->data; PNODE r= pStack->pTop;//记录栈顶节点 pStack->pTop = pStack->pTop->pNext; free(r); r=NULL;//释放原来栈顶节点的空间 return true; }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:c模拟链表操作,笔记-创新互联
当前路径:https://www.cdcxhl.com/article40/dcsjho.html
成都网站建设公司_创新互联,为您提供定制开发、网站策划、移动网站建设、响应式网站、商城网站、网站维护
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联