第五周项目二
来源:互联网 发布:手机windows主题下载 编辑:程序博客网 时间:2024/05/17 05:10
/* 烟台大学计算机与控制工程学院 文件名称:ycddd.cpp 作者:李恩 完成日期:2017年10月15日 问题描述:定义链栈存储结构,实现其基本运算 输入描述:无 输出描述:链栈的操作以及栈的操作后的元素输出,以及出栈的元素输出 */ #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)
- AngularJS 注册表单验证
- 浅谈Java里的三种锁:偏向锁、轻量级锁和重量级锁
- Qt5使用qDebug()在windows控制台中输出信息
- 传入一个string类型的参数,然互将string的每个字符间隔一个空格返回
- 秒杀和抢购
- 第五周项目二
- gitlab使用说明 git 项目分类
- mongoengine使用
- (DOM艺术) 实用的动画
- Unity 获取鼠标点击图片时 获取点击位置的像素
- Android之RxJava函数响应式编程(一)基本用法
- 我的学习记录5
- shiro与erp系统整合
- python map函数,Filter函数,Reduce函数