栈的基本操作
更新时间:2024-07-09 17:30:01 阅读量: 综合文库 文档下载
栈的基本操作
题目:栈的基本操作(顺序存储和链式存储任选一种)
一需求分析
了解顺序栈,链式栈的定义;程序构建了进栈,出栈,空栈,和满栈等操作。
二、概要设计
1;/* 顺序栈的定义*/ #define MAXSIZE 100 typedef int ElemType; typedef struct{
ElemType data[MAXSIZE]; int top; }sqStack;
/* 链式栈的定义*/ typedef struct Lstack{ ElemType data; struct Lstack *next; }Lstack
2;/*创建一个顺序栈*/ void Create_Sqs(sqStack *s) {
int i, n;
printf(\ scanf(\ for (i = 1; i <= n; i++) scanf(\ s->top = n; }
2、本程序包含五个模块:
(1)主程序模块: void main(){
定义头文件;
定义类型; 接受命令; 处理命令; 输出; }
第 1 页 共 7 页
(2)顺序栈,链式栈的定义; (3)输入输出栈元素; (4)创建循环队列;
(5)入队,出队,输出值; 三、详细设计
1、定义头文件
#include
ElemType data[MAXSIZE]; int top; }sqStack;
/* 链式栈的定义*/ typedef struct Lstack{ ElemType data; struct Lstack *next; }Lstack;
/*练习的主要内容,是栈和队列的基本操作*/ /*创建一个顺序栈*/
void Create_Sqs(sqStack *s) {
int i, n;
printf(\ scanf(\ for (i = 1; i <= n; i++) scanf(\ s->top = n; }
/*输出栈元素*/
void out_Sqs(sqStack *s) {
int i;
if (s->top == 0) { return; }
for (i = s->top; i > 0; i--) {
第 2 页 共 7 页
printf(\ }
printf(\}
/*进栈一个元素*/
void push(sqStack *s, ElemType e) {
if (s->top == MAXSIZE - 1) { printf(\ } else { s->top = s->top + 1; s->data[s->top] = e; } }
/*出栈一个元素*/
ElemType pop(sqStack *s) {
int x;
if (s->top == 0) { printf(\ return(-1); } else { x = s->data[s->top]; s->top = s->top - 1; return(x); } }
/* 循环队列的定义*/ typedef struct{
ElemType elem[MAXSIZE];
int front; //头指针,若队列不空,指向队头元素;
int rear; //尾指针,若队列不空,指向队尾元素的下一个位置 int full; }SqQueue;
/*创建一个循环队列*/
第 3 页 共 7 页
void create_sqQ(SqQueue * S) {
int n = 0; int i = 0;
ElemType data;
/*首先构造一个空队列*/ S->front = S->rear = 0; S->full=0;
/* 输入元素个数*/ printf(\ scanf(\ if (n > MAXSIZE) { printf(\ return; }
/*逐步输入元素的值*/ for (i = 0; i < n; i++) { scanf(\ S->elem[S->rear] = data; S->rear = (S->rear + 1) % MAXSIZE; if (S->rear == S->front) { printf(\ return; } }
return; }
/* 入队*/
ElemType EnQueue(SqQueue *S, ElemType e) {
if (S->rear == S->front) { printf(\ return (-1); }
S->elem[S->rear] = e;
S->rear = (S->rear + 1)% MAXSIZE; return e; }
/* 出队 */
第 4 页 共 7 页
ElemType delQueue(SqQueue * S) {
ElemType e;
if (S->front == S->rear && S->full==0) { printf(\ return(-1); }
e = S->elem[S->front];
S->front = (S->front + 1) % MAXSIZE; S->full=0; return e; }
/* 输出队列*/
void output_Queue(SqQueue *S) {
int i = 0;
if (S->front == S->rear && S->full==0) { printf(\ return; }
i = S->front;
while (i != S->rear) { printf(\ i = (i + 1) % MAXSIZE; }
printf(\ }
主函数: void main() {
sqStack s; SqQueue S; ElemType e; Create_Sqs(&s); out_Sqs(&s); push(&s, 10); out_Sqs(&s);
printf(\ out_Sqs(&s); system(\
第 5 页 共 7 页
}
/* 以下是循环队列的测试*/ create_sqQ(&S); output_Queue(&S); EnQueue(&S, 10); output_Queue(&S); e = delQueue(&S); printf(\output_Queue(&S); system(\return;
四,调试分析:
1、对顺序和链式栈的定义、节点类型和长度 ;输出栈元素 输出栈元素和进栈一个元素;创建一个循环队列首先构造一个空队列输入元素个数 ;这些对循环队列的测试包括输出和加入元素。
2、对循环队列定义头指针,若队列不空,指向队头元素;尾指针,若队列不空,指向队尾元素的下一个位置。所以增加 int full;用以判断对full赋值为0或者1。
3、 创建循环队列首先构建一个空队列在向空队列里输入元素,再判断元素是否满栈,用full判断,对循环队列输出元素时要判断是否为空,。
第 6 页 共 7 页
五 、运行结果
五、实验环境
(1) 编程环境:VC6.0++
六、实验体会
通过本次实验我了解到如何构建顺序栈,链式栈以及循环队列;还有结构的创建、进栈(入队)、出栈(出队)等操作,(实现栈(队)空和栈(队)满)等让我感觉到其操作的便利性,获益匪浅,但在操作过程中我也感到自己知识的不足,做起来有些困难,今后还需丰富知识与加强操作熟练程度。
第 7 页 共 7 页
正在阅读:
栈的基本操作07-09
天然气发动机故障分析与诊断 - - --4.张颂颂-毕业设计正文部分-105304140 - 图文10-10
六中物理学生成果207-01
2007 - 2008学年下学期期末考试10-01
高中语文64篇必背古诗文07-31
2011年国家一级篮球裁判员理论考试试题04-13
国统考前模拟题02-02
郴州市城市防洪排涝情况调研报告04-13
西南交大上学实验课题目12-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 基本操作
- 会计中级财务管理第十章重点
- 2013年浙江省诸暨市浣江科学试题卷
- 15春北航《生产与运作管理》在线作业三正确答案
- 民族团结进步示范旗考评细则 - 图文
- 我国第三方物流现状、问题与对策研究开题报告
- 2017-2022年中国风险投资市场深度评估与发展趋势研究报告(目录
- 2016-2022年中国圆盘造粒机市场发展策略及投资潜力可行性预测报
- 省工商联征集不符合科学发展现象汇总
- 乡村少年宫和未成年人心理辅导工作总结
- 皖江城市带承接产业转移示范区区位商分析
- 学六年级上册语文期末复习资料集锦
- 2016届河南省郑州第一中学高三第二次模拟考试 文科综合(1)
- 2010年二级建造师《建筑工程》真题及答案解析 - 图文
- 七年级下册地理单元目标检测题
- 机械论文
- 回风巷防突专项安全措施
- 2017年18项医疗核心制度考试试卷A
- 2012 - 2013学年高二上学期段考试题(世界地理)
- 有关于暑假社会实践报告
- 历史趣谈隋炀帝开凿大运河的真正动机