第五周 项目2
来源:互联网 发布:淘宝姜峰手机可信吗 编辑:程序博客网 时间:2024/05/22 17:41
问题及描述:
/* 烟台大学计算机学院 文件名称:ycddd.cpp 作者:范宝磊 完成日期:2017年10月6日 问题描述:定义链栈存储结构,实现其基本运算 输入描述:无 输出描述:链栈的操作以及栈的操作后的元素输出,以及出栈的元素输出 */ #include <stdio.h> #include "ltsk.h" int main() { ElemType e; LinkStNode *s; printf("(1)初始化链栈s\n"); InitStack(s); printf("(2)链栈为%s\n",(StackEmpty(s)?"空":"非空")); printf("(3)依次进链栈元素a,b,c,d,e\n"); Push(s,'a'); Push(s,'b'); Push(s,'c'); Push(s,'d'); Push(s,'e'); printf("(4)链栈为%s\n",(StackEmpty(s)?"空":"非空")); printf("(5)链栈长度:%d\n",StackLength(s)); printf("(6)从链栈顶到链栈底元素:");DispStack(s); printf("(7)出链栈序列:"); while (!StackEmpty(s)) { Pop(s,e); printf("%c ",e); } printf("\n"); printf("(8)链栈为%s\n",(StackEmpty(s)?"空":"非空")); printf("(9)释放链栈\n"); DestroyStack(s); return 0; } #include <stdio.h> #include <malloc.h> #include "ltsk.h" void InitStack(LinkStNode *&s)//初始化 { s=(LinkStNode *)malloc(sizeof(LinkStNode));//动态分配空间 s->next=NULL; } void DestroyStack(LinkStNode *&s) { LinkStNode *pre=s,*p=s->next; while(p!=NULL)//循环释放空间 { free(pre); pre=p; p=pre->next; } free(pre); } int StackLength(LinkStNode *s) { int i=0; LinkStNode *p; p=s; while(p!=NULL)//计算链栈元素个数 { i++;//用i计数 p=p->next; } return i; } bool StackEmpty(LinkStNode *s) { return(s->next==NULL); } void Push(LinkStNode *&s,ElemType e)//入栈 { LinkStNode *p; p=(LinkStNode *)malloc(sizeof(LinkStNode)); p->data=e;//存放e p->next=s->next;//将p节点插入作为首节点 s->next=p; } bool Pop(LinkStNode *&s,ElemType &e) { LinkStNode *p; if(s->next==NULL)//栈空的情况 { return false; } p=s->next;//提取p节点给e e=p->data; s->next=p->next; free(p); return true; } bool GetTop(LinkStNode *s,ElemType &e) { if(s->next==NULL)//栈空的情况 return false; e=s->next->data;//将栈顶元素取出给e return true; } void DispStack(LinkStNode *s) { LinkStNode *p=s->next; while (p!=NULL)//输出链栈元素 { printf("%c ",p->data); p=p->next; } printf("\n"); } #include <stdio.h> typedef char ElemType; typedef struct linknode { ElemType data; struct linknode *next; }LinkStNode; void InitStack(LinkStNode *&s);//初始化链栈 void DestroyStack(LinkStNode *&s);//销毁链栈 int StackLength(LinkStNode *s);//计算长度 bool StackEmpty(LinkStNode *s);//判断是否为空 void Push(LinkStNode *&s,ElemType e); //入栈 bool Pop(LinkStNode *&s,ElemType &e); //出栈 bool GetTop(LinkStNode *s,ElemType &e); //取栈顶元素 void DispStack(LinkStNode *s); //输出栈中元素
运行及结果:
学习心得:
学会了用链栈算法来对链栈进行操作。
阅读全文
0 0
- 第五周项目2
- 第五周项目2
- 第五周 项目2
- 第五周项目2
- 第五周【项目2
- 第五周 【项目2
- 第五周项目2
- 第五周项目2
- 第五周 项目2
- 第五周 【项目2
- 第五周 项目2
- 第五周 项目 2
- 第五周 【项目2
- 第五周-项目2
- 第五周【项目2
- 第五周 项目2
- 第五周 【项目2
- 第五周项目 项目2
- Hdu 5512 Meeting (建图技巧 + 最短路)
- Python 多进程,进程加锁(RLock),进程执行乱序(进程同步)
- 基于VS2013的wxWidgets 3.1.0环境配置
- java 静态初始化块中,方法中不可以定义静态变量(重要)
- 爱的一种解释
- 第五周 项目2
- POJ1163
- 致胜管家婆财贸双全 财贸通进销存版V17.0破解
- 【Leetcode-easy-111】Minimum Depth of Binary Tree
- SDUT-3399-数据结构实验之排序二:交换排序
- 并行计算的多线程数据结构
- Leetcode 101
- java中的关键字使用
- PV操作