数据结构与算法问题分析及源代码之栈操作

数据结构与算法问题分析及源代码之栈操作

ID:40229781

大小:38.00 KB

页数:4页

时间:2019-07-27

数据结构与算法问题分析及源代码之栈操作_第1页
数据结构与算法问题分析及源代码之栈操作_第2页
数据结构与算法问题分析及源代码之栈操作_第3页
数据结构与算法问题分析及源代码之栈操作_第4页
资源描述:

《数据结构与算法问题分析及源代码之栈操作》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、栈操作1题目编写一个程序,实现顺序栈的各种基本算法,包括:栈操作:初始化栈、判断栈s是否非空、输出栈长度、释放栈栈元素操作:压栈、出栈2目标熟悉栈的定义及其基本操作的实现3设计思想考虑到顺序栈受空间的限制较大,因此选择建立链栈,在结点定义的结构体中包含两个元素,数据和指向下一个结点的next指针。栈的特点是先入后出,进栈出栈都在一端进行,因此只需对栈顶结点进行操作就能实现压栈出栈操作,头结点用来存放长度,对头结点进行操作能实现判空、求长等操作。4算法描述(1)初始化栈:申请结点空间,初始化数据为0,next指针为null。(2)判断s是否为空:头结点ne

2、xt指针为NULL,返回1,否则返回0。(3)输出栈长度:返回头结点数据值。(4)释放栈:从头结点开始,沿next指针向后逐个释放结点,直到next指向空。(5)压栈:新申请结点,存入数据值,next赋值为NULL,修改当前栈顶结点的next指针指向新加结点,栈底结点计数器加一。(6)出栈:保存待删除结点数据值,修改其前一个结点的next指针为null,释放删除结点,栈底的计数器减一。5程序结构图主程序main初始化栈sInitStack(SqStack*&s)释放栈sClearStack(SqStack*&s)判断栈s是否为空StackEmpty(Sq

3、Stack*s)求栈s的长度StackLength(SqStack*s)出栈一个元素Pop(SqStack*&s,ElemType&e)取栈顶元素GetTop(SqStack*s,ElemType&e)进栈一个元素Push(SqStack*&s,ElemType&e)从栈顶到栈底输出元素底DispStack(SqStack*s)6源程序#include#include#defineERROR0typedefstructLNode{intdata;structLNode*next;}LNode,*LinkStack;L

4、inkStackInitStack(LinkStackS){S=(LinkStack)malloc(sizeof(LNode));S->data=0;S->next=NULL;returnS;}voidClearStack(LinkStackS){LinkStackf=S;while(S){S=S->next;free(f);f=S;}}intStackEmpty(LinkStackS){if(S->next==NULL)return1;elsereturn0;}intStackLength(LinkStackS){returnS->data;}void

5、Push(LinkStackS){inte;LinkStackp=(LinkStack)malloc(sizeof(LNode));printf("请输入要压入栈的元素的值:");scanf("%d",&e);p->data=e;p->next=S->next;S->next=p;S->data++;printf("元素%d已压入栈!",e);}intPop(LinkStackS){if(StackEmpty(S)){printf("栈为空");return0;}inte;LinkStackf=S->next;e=f->data;if(!StackE

6、mpty(S)){S->next=S->next->next;free(f);S->data--;printf("出栈元素的值为:%d",e);}elseprintf("栈为空");}voidDispStack(LinkStackS){LinkStackp=S->next;if(!StackEmpty(S)){while(p){printf("%d",p->data);p=p->next;}}elseprintf("栈为空");}intGetTop(LinkStackS){if(StackEmpty(S)){printf("栈顶为空"

7、);return0;}printf("栈顶元素的值为:%d",S->next->data);returnS->next->data;}

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

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

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