- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 栈和队列的基本操作
实验目的
定义顺序栈的结点类型,掌握顺序栈插入和删除元素在操作上的特点。
定义链队列的结点类型,掌握链队列插入和删除元素在操作上的特点。
加深对栈和队列的理解,逐步培养解决实际问题的编程能力。
实验环境
运行C或VC++的微机。
实验内容
1、试编写程序,在顺序存储结构下实现堆栈的下列运算:
(1)initstk(s)。初始化操作,建立一个空栈s;
(2)emptystk(s)。判定栈是否为空;
(3)pushstk(s)。如果栈s不满,在栈顶插入x;
(4)popstk(s)。如果栈s不空,删除栈顶元素,并返回该元素的值;
(5)getstk(s)。如果栈s不空,返回栈顶元素。
2、 试编写程序,从键盘自主输入若干字符,构建一个链队列,并实现该队列元素入队和出队的操作。
设计思路
这道题我打算按顺序结构做下去,依次达成以上功能,依次摆放功能函数,已达成以上功能
链栈与链队列均有采用动态数组、链表
链栈有8个函数,含有主函数、初始化函数、判断函数、插入函数、删除函数、返回函数、创建链栈函数、输出函数;链队列有7个函数,含有主函数、初始化函数、获取函数、入队函数、出队函数、销毁函数、显示函数。
程序代码
链栈
#include stdio.h
#include malloc.h
#includestdlib.h
#define OK 1
#define ERROR 0
typedef struct Node //定义结构体
{
int data; //数据域
struct Node *next; //指针域
}Node,*LinkStack;
int initstk(LinkStack *s)//初始化操作,建立一个空栈s
{
*s=(LinkStack)malloc(sizeof(Node));//建立头结点,其next为空
(*s)-next=NULL;
return OK;
}
int emptystk(LinkStack *s)//判定栈是否为空
{
if ((*s)-next==NULL)
return 1;//栈空返回1
else
return 0;//非空返回0
}
void pushstk(LinkStack *s,int *x)//如果栈s不满,在栈顶插入x
{
LinkStack p;
if((p=(LinkStack)malloc(sizeof(Node)))==NULL)
{
printf(不能分配内存空间);
exit(0);
}
p-data=*x;
p-next=(*s)-next;
(*s)-next=p;
}
int popstk(LinkStack *s,int *e)//如果栈s不空,删除栈顶元素,并返回该元素的值
{
LinkStack p;
if(emptystk(s)) //栈空返回ERROR
{
printf(空栈无法实现出栈操作\n);
return ERROR;
}
p=(*s)-next;
*e = p-data;
(*s)-next = p-next;
free(p);
p=NULL;
return OK;
}
void getstk(LinkStack *s,int *e)//如果栈s不空,返回栈顶元素
{
*e=(*s)-next-data;
}
int creatstk(LinkStack *s)//创建链栈,并输入元素
{ int a;
int n;
int i;
if(initstk(s)!=1)
{
printf(分配空间失败,无法建立队列\n);
exit(ERROR);
}
printf(输入将建立链栈元素的个数:);
scanf(%d,n);
printf(请依次输入需要进栈的元素:\n);
for(i=1;i=n;i++)
{printf(链队列第%d个元素的值为:,i);
scanf(%d,a);
pushstk(s,a);}
return OK;
}
void printstk(LinkStack S)//输出队列元素
{
Node *p;
p=S-next;
while(p!= NULL)
{
printf(%d\t,p-data);
p=p-next;
}
}
int main ()
{
int a,b,c,i;
printf(**************欢迎使用!**************潘俊达
您可能关注的文档
- 数据结构课程设计报告(图的遍历).doc
- 会计电算化实验报告.doc
- 世界主要气候类型、分布及特征.doc
- 单片机实验报告_25.doc
- 生理学实验5-2 家兔呼吸运动的影响因素观测.doc
- 实验二 金相样品的制备.doc
- 过程控制综合实验报告.doc
- 学校规章制度高中班级管理制度.doc
- 吉林大学抽水试验设计报告.doc
- matlab上机实验指导书(5).doc
- 2025年烟台市正大城市建设发展有限公司招聘工作人员12名笔试参考题库附带答案详解.doc
- 2025年衢州市属国企公开招聘工作人员笔试参考题库附带答案详解.doc
- 2025中铁四局集团有限公司法律合规部公开招聘1人笔试参考题库附带答案详解.docx
- 2025中国建筑股份有限公司岗位招聘【人力资源部(干部人事部)】笔试参考题库附带答案详解.docx
- 2025年滁州定远县中盐东兴盐化股份有限公司招聘2人笔试参考题库附带答案详解.doc
- DB1331T109-2025雄安新区建设工程抗震设防标准(963.84KB)(1).pdf
- 2025辽宁省能源控股集团所属抚矿集团招聘76人笔试参考题库附带答案详解.pdf
- 2024陕西延长石油集团华特新材料股份有限公司社会招聘8人笔试参考题库附带答案详解.pdf
- 2023内蒙古大唐国际锡林浩特矿业有限公司采煤自营专项社会招聘32人笔试参考题库附带答案详解.pdf
- 2024年12月云南大学国际合作与交流处公开招聘(1人)笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
最近下载
- 注册安全工程师中级其他安全生产专业实务(其他安全类案例)模拟试卷5.pdf VIP
- 2025低压分布式光伏入网技术规范.docx VIP
- GB生产设备安全卫生设计总则.doc VIP
- 产教融合、校企合作——黄淮学院的探索与实践.ppt VIP
- 注册安全工程师中级其他安全生产专业实务(其他安全类案例)模拟试卷9.pdf VIP
- 《呼吸防护用品 自吸过滤式防颗粒物呼吸器》GB 2626-2019-2020.7.1.docx VIP
- 危险货物包装标志.docx VIP
- 地下水质量标准GB148482017.docx VIP
- 《心理学史教学大纲.doc VIP
- GBT-用于校准表面污染监测仪的参考源 α、β和光子发射体及编制说明.pdf VIP
文档评论(0)