第五周项目2
来源:互联网 发布:影楼行业全国数据 编辑:程序博客网 时间:2024/05/22 19:57
/* 烟台大学计算机学院 文件名称: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
- poj 3421 X-factor Chains
- Codeforces 858F ( Codeforces Round #434 Div. 2 F ) Wizard's Tour 图论dfs
- 蓝桥杯 算法提高 数字黑洞
- Hadoop Yarn初探
- 常用算法
- 第五周项目2
- 简单模拟——LRC才不会告诉你们的事情
- 位图显示和图形界面技术(操作系统桌面显示技术)
- JavaScript 事件入门
- php中json_decode()和json_encode()的使用方法
- Java集合---ConcurrentHashMap原理分析
- T-SQL查询进阶--详解公用表表达式(CTE)
- JAVA集合体系
- 【Python】Error:'int' object is not callable