欢迎来到天天文库
浏览记录
ID:59007170
大小:84.36 KB
页数:7页
时间:2020-09-15
《C语言入门基础教程16堆栈.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言/C++学习联盟Stack(栈)栈的结构:下面是数据结构的集中类型:structstu//链表{intdata;//抽象出的一种数据structstu*pnext;//链表的指针};struct//顺序表{intdata[100];intsize;//顺序表大小标志};struct//顺序结构的栈{intdata[100];inttop;//栈顶标志};顺序结构的栈:#include#defineMAXSIZE100typedefstruct//顺序结构的栈{intdata[MAXSIZE];intto
2、p;//栈顶标志}SeqStack;voidStackInit(SeqStack*S);//初始化intStackPush(SeqStack*S,intdata);//入栈intStackPop(SeqStack*S,int*data);//出栈intmain(){intdata;SeqStackmyStack;//定义一个变量StackInit(&myStack);//初始化栈for(inti=0;i<10;i++){StackPush(&myStack,i+1);printf("%dt",myStack.data[i])
3、;}for(inti=0;i<10;i++){StackPop(&myStack,&data);printf("%dt",data);}return0;}//初始化voidStackInit(SeqStack*S){S->top=0;}//入栈intStackPush(SeqStack*S,intdata){if(S->top>=MAXSIZE)//判断栈是否满{printf("栈满!");return0;}else{S->data[S->top]=data;//往栈顶加入数据S->top++;return1;}}//出
4、栈不是要删除而是得到intStackPop(SeqStack*S,int*data){if(S->top<=0){printf("栈空");return0;}else{S->top--;*data=S->data[S->top];return1;}}//栈顶的元素出栈判空入栈判满*data=S->data[S->top-1];//12345678910链式结构的栈://链式栈#includetypedefstructnode{intdata;structnode*pnext;}LsNode;voidSta
5、ckInit(LsNode**head);//初始化voidStackPush(LsNode*head,intdata);//入栈intStackPop(LsNode*head,int*data);//出栈intmain(){intdata;LsNode*head;//在主函数中定义变量的时候,系统根据变量的数据类型开辟大小。inta4doubleb8//定义指针变量的时候必须用malloc去只指定内存的大小。StackInit(&head);for(inti=0;i<10;i++){StackPush(head,i+1);}
6、for(inti=0;i<10;i++){StackPop(head,&data);printf("%dt",data);}return0;}//初始化voidStackInit(LsNode**head){*head=(LsNode*)malloc(sizeof(LsNode));(*head)->pnext=NULL;//int=NULL;}//入栈voidStackPush(LsNode*head,intdata){LsNode*p;//从新定义一个节点p=(LsNode*)malloc(sizeof(LsNode))
7、;//为新的节点开辟空间//malloc开辟一块内存并且返回一个空指针类型,空指针类型可以强制转换为任意其他指针类型。p->data=data;//对新节点的内容填充p->pnext=head->pnext;//新节点的pnext指向NULLhead->pnext=p;//新节点的地址赋给head->pnext.}//出栈intStackPop(LsNode*head,int*data){LsNode*p=head->pnext;//p指向哪里?指向第一个元素if(NULL==p){printf("栈空");return0
8、;}else{head->pnext=p->pnext;//让head->pnext指向下一个元素*data=p->data;//得到需要的第一个元素保存在data变量中free(p);//释放p指向的内存。return1;}}//队列吗讲不完注意:循环队列队列满头尾重合队列
此文档下载收益归作者所有