第五周项目2-建立链表栈算法库
来源:互联网 发布:2016年网络春晚节目单 编辑:程序博客网 时间:2024/06/04 19:19
<pre name="code" class="cpp">/* copyright (t) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:臧新晓 *完成日期:2016年10月9日 *版本号:v1.0 *问题描述:定义链栈存储结构,实现其基本运算,并完成测试。 *输入描述:无 *程序输出:链栈基本运算的实现结果 */
//listack.htypedef char Elemtype; typedef struct linknode { Elemtype data; struct linknode *next; } LiStack; void InitStack(LiStack *&s); //初始化栈 void DestroyStack(LiStack *&s); //销毁栈 bool StackEmpty(LiStack *s); //栈是否为空 int StackLength(LiStack *s); //返回栈中元素个数——栈长度 void Push(LiStack *&s,Elemtype e); //入栈 bool Pop(LiStack *&s,Elemtype &e); //出栈 bool GetTop(LiStack *s,Elemtype &e); //取栈顶数据元素 void DispStack(LiStack *s); //输出栈
<pre name="code" class="cpp">//listack.cpp#include <stdio.h> #include <malloc.h> #include "listack.h" void InitStack(LiStack *&s) //初始化栈 { s=(LiStack *)malloc(sizeof(LiStack)); s->next=NULL; } void DestroyStack(LiStack *&s) //销毁栈 { LiStack *pre=s,*p=s->next; while(p!=NULL) { free(pre); pre=p; p=p->next; } free(p); } bool StackEmpty(LiStack *s) //栈是否为空 { return (s->next==NULL); } int StackLength(LiStack *s) //返回栈中元素个数——栈长度 { int len=0; //初始长度置0 LiStack *p=s->next; while(p!=NULL) { len++; p=p->next; } return len; } void Push(LiStack *&s,Elemtype e) //入栈 { LiStack *p; p=(LiStack *)malloc(sizeof(LiStack)); p->data=e; p->next=s->next; s->next=p; } bool Pop(LiStack *&s,Elemtype &e) //出栈 { LiStack *p; if(s->next==NULL) return false; p=s->next; e=p->data; s->next=p->next; printf("%c ",e); free(p); return true; } bool GetTop(LiStack *s,Elemtype &e) //取栈顶数据元素 { if(s->next==NULL); return false; e=s->next->data; return true; } void DispStack(LiStack *s) //输出栈 { LiStack *p=s->next; //p指向s中第一个数据元素 while(p!=NULL) { printf("%c ",p->data); p=p->next; } printf("\n"); }
main.cpp#include <stdio.h> #include "listack.h" int main() { LiStack *s; Elemtype e; InitStack(s); //初始化栈s if(StackEmpty(s)) //判断s栈是否为空 printf("该栈是空栈\n"); else printf("该栈不是空栈\n"); Push(s,'a'); //a元素进栈 Push(s,'b'); //b元素进栈 Push(s,'c'); //c元素进栈 Push(s,'d'); //d元素进栈 Push(s,'e'); //e元素进栈 if(StackEmpty(s)) //判断s栈是否为空 printf("该栈是空栈\n"); else printf("该栈不是空栈\n"); printf("栈长度为:%d\n",StackLength(s)); //输出栈长度 printf("从栈顶元素到栈底元素的输出序列为:\n"); DispStack(s); //输出从栈顶到栈底元素 if(StackEmpty(s)) //判断s栈是否为空 printf("该栈是空栈\n"); else printf("该栈不是空栈\n"); printf("出栈序列为:\n"); //出栈,并输出出栈序列 while (!StackEmpty(s)) //栈不为空时输出出栈元素 Pop(s,e); printf("\n"); DestroyStack(s); //销毁(释放)栈 printf("此栈已被销毁!\n"); return 0; }
知识点总结:
链栈的定义及基本运算
心得体会:
需加强对单链表基本运算的巩固落实。
0 0
- 第五周项目2-建立链表栈算法库
- 第五周项目2--建立链栈算法库
- 第五周项目2-建立链栈算法库
- 第五周 项目2-建立链栈算法库
- 第五周项目2 -建立链栈算法库
- 第五周项目2-建立链栈算法库
- 第五周项目2-建立链栈算法库
- 第五周项目2-建立链算法库
- 第五周项目2-建立链栈算法库
- 第五周项目2-建立链算法库
- 第五周 项目2-建立链栈算法库
- 第五周项目2 -建立链栈算法库
- 第五周 项目2 - 建立链栈算法库
- 第五周--项目2-建立链栈算法库
- 第五周 项目2 - 建立链栈算法库
- 第五周项目2-建立链栈算法库
- 第五周项目2-建立链栈算法库
- 第五周项目2--建立链栈算法库
- 第七周-项目四-队列数组
- 小明的调查作业(未完成)
- Hadoop编码解码【压缩解压缩】机制详解(1)
- 剖析XMLHttpRequest
- 剖析XMLHttpRequest
- 第五周项目2-建立链表栈算法库
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)
- 正向代理和反向代理
- 微服务框架Finagle介绍 Part2: 在Finagle中开发基于Http协议的应用
- Objective-C环境的protobuf3.0.0使用
- 第七周项目5排队看病模拟
- 纯CSS实现图片轮播
- 博客地址 RSS地址
- 一分钟了解负载均衡的一切