C语言入门基础教程16堆栈.docx

C语言入门基础教程16堆栈.docx

ID:59007170

大小:84.36 KB

页数:7页

时间:2020-09-15

C语言入门基础教程16堆栈.docx_第1页
C语言入门基础教程16堆栈.docx_第2页
C语言入门基础教程16堆栈.docx_第3页
C语言入门基础教程16堆栈.docx_第4页
C语言入门基础教程16堆栈.docx_第5页
资源描述:

《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;}}//队列吗讲不完注意:循环队列队列满头尾重合队列

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。