- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告:栈精要
肇庆学院 计算机学院/软件学院
实 验 报 告(实验三)
专业_________班级__________姓名__________学号__________课程名称_____________
学年2009 --2010 学期 1□ / 2□ 课程类别 专业必修□ 限选□ 任选□ 实践□
实验内容: 实验时间:2010年 6 月11日
1.编写函数,采用链式存储实现栈的初始化、入栈、出栈操作。
2.编写函数,采用顺序存储实现栈的初始化、入栈、出栈操作。
3.编写函数,采用链式存储实现队列的初始化、入队、出队操作。
4.编写函数,采用顺序存储实现队列的初始化、入队、出队操作。
5.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。
实验目的及要求:
1.掌握栈、队列的思想及其存储实现
2.掌握栈、队列的常见算法的程序实现
方法与步骤:
详见从第2页开始的源代码
实验结果:
小结:
肇庆学院 计算机学院/软件学院
实验报告(附页)
源代码:
#include stdio.h
#include stdlib.h
#define OVERFLOW -2
#define ERROR 0
#define OK 1
#define MAX 100 //栈的最大值
typedef int SElemType;
typedef int QElemType;
typedef struct
{SElemType *base;
SElemType *top;
}SqStack;
SqStack InitStacka( ) //顺序存储实现栈的初始化
{SqStack S;
S.base=(SElemType *)malloc(MAX*sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top=S.base;
return(S);
}
void Pusha(SqStack S,int x) //顺序存储实现栈的入栈操作
{if(S.top-S.base=MAX) exit(OVERFLOW);
*S.top++=x;
}
void Popa(SqStack S) //顺序存储实现栈的出栈操作
{SElemType *p;
int x;
if(S.top==S.base) return ;
else {p=S.top;
x=*--S.top;
printf(\t删除的栈顶元素是%d\n\t出栈操作完成后的栈为:\n,x);
}
}
void printa(SqStack S) //输出
{SElemType *p;
p=S.base;
printf(\t);
while(p!=S.top)
{printf(%d ,*(p++));}
printf(\n);
}
typedef struct SqNode
{SElemType data;
SqNode *Link;
}*Sqptr,NODE;
typedef struct
{Sqptr top;
}Stack;
Stack InitStackb() //链式存储实现栈的初始化
{Stack S;
S.top=(Sqptr)malloc(sizeof(NODE));
if(!S.top) exit (OVERFLOW);
S.top-Link=NULL;
return(S);
}
void Pushb(Stack S,int x) //链式存储实现栈的入栈操作
{Sqptr p;
p=(Sqptr)malloc(sizeof(NODE));
if(!p) return;
p-data=x;
p-Link=S.top-Link;
S.top-Link=p;
}
void Popb(Stack S) //链式存储实现栈的出栈操作
{int x;
Sqptr p;
if(S.top-Link==NULL) return;
else {p=S.top-Link;
x=p-data;
S.top-Link=p-Link;
printf(\t删除的栈顶元素是%d\n,x);
free(p);}
}
typedef struct QNode
{QElemType data;
struct QNode *next;
}*QueuePtr,QNode;
typedef struct
{QueuePtr front;
QueuePtr rear;
}LinkQueue;
LinkQueue InitQueue() //链式存储实现队列的初始化
{LinkQueue Q;
文档评论(0)