您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > C语言入门基础教程16堆栈
C语言/C++学习联盟Stack(栈)栈的结构:下面是数据结构的集中类型:structstu//链表{intdata;//抽象出的一种数据structstu*pnext;//链表的指针};struct//顺序表{intdata[100];intsize;//顺序表大小标志};struct//顺序结构的栈{intdata[100];inttop;//栈顶标志};顺序结构的栈:#includestdio.h#defineMAXSIZE100typedefstruct//顺序结构的栈{intdata[MAXSIZE];inttop;//栈顶标志}SeqStack;voidStackInit(SeqStack*S);//初始化intStackPush(SeqStack*S,intdata);//入栈intStackPop(SeqStack*S,int*data);//出栈intmain(){intdata;SeqStackmyStack;//定义一个变量StackInit(&myStack);//初始化栈for(inti=0;i10;i++){StackPush(&myStack,i+1);printf(%d\t,myStack.data[i]);}for(inti=0;i10;i++){StackPop(&myStack,&data);printf(%d\t,data);}return0;}//初始化voidStackInit(SeqStack*S){S-top=0;}//入栈intStackPush(SeqStack*S,intdata){if(S-top=MAXSIZE)//判断栈是否满{printf(栈满!\n);return0;}else{S-data[S-top]=data;//往栈顶加入数据S-top++;return1;}}//出栈不是要删除而是得到intStackPop(SeqStack*S,int*data){if(S-top=0){printf(栈空\n);return0;}else{S-top--;*data=S-data[S-top];return1;}}//栈顶的元素出栈判空入栈判满*data=S-data[S-top-1];//12345678910链式结构的栈://链式栈#includestdio.htypedefstructnode{intdata;structnode*pnext;}LsNode;voidStackInit(LsNode**head);//初始化voidStackPush(LsNode*head,intdata);//入栈intStackPop(LsNode*head,int*data);//出栈intmain(){intdata;LsNode*head;//在主函数中定义变量的时候,系统根据变量的数据类型开辟大小。inta4doubleb8//定义指针变量的时候必须用malloc去只指定内存的大小。StackInit(&head);for(inti=0;i10;i++){StackPush(head,i+1);}for(inti=0;i10;i++){StackPop(head,&data);printf(%d\t,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));//为新的节点开辟空间//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(栈空\n);return0;}else{head-pnext=p-pnext;//让head-pnext指向下一个元素*data=p-data;//得到需要的第一个元素保存在data变量中free(p);//释放p指向的内存。return1;}}//队列吗讲不完注意:循环队列队列满头尾重合队列的大小size或者num或者count计数Typdefstruct{Intdata[100];Intfront;Intend;Intcount;}链式:很灵活作业:熟悉队列的结构并且尝试去操作队列。
本文标题:C语言入门基础教程16堆栈
链接地址:https://www.777doc.com/doc-2907860 .html