河南工业大学实验报告_实验一 线性结构(二)--栈和队列的操作 - 范文中心

河南工业大学实验报告_实验一 线性结构(二)--栈和队列的操作

04/24

xxxx 大学实验报告

课程名称 数据结构 实验项目 实验一 线性结构(二) ——栈和队列的操作

院 系 信息学院计类系 专业班级 计类1501 姓 名 学 号

指导老师 日 期

批改日期 成 绩

一 实验目的 1. 熟练掌握栈的存储结构及相关典型操作。

2. 熟练掌握队列的存储结构及相关典型操作。

二 实验内容及要求

实验内容:

1. 建立链式栈,实现栈的初始化、进栈、出栈等典型操作。

2. 建立循环队列,实现队列的初始化、进队、出队等典型操作。

实验要求: 1. 键盘输入数据;

2. 屏幕输出运行结果。

3. 要求记录实验源代码及运行结果。

4. 运行环境:VC++6.0

三 实验过程及运行结果

1、 循环队列

#include

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -2

#define MAXQSIZE 100 //最大队列长度

typedef struct

{

int *base; //初始化的动态分配存储空间

int front;

int rear;

}SqQueue;

//初始化队列

int InitQueue(SqQueue Q)

{

}

//入队操作

int EnQueue(SqQueue Q)

{

}

//出队操作 int e; if ((Q.rear+1)%MAXQSIZE==Q.front) //判断队满 { } printf("请输入入队元素:"); scanf("%d",&e); Q.base[Q.rear]=e; //入队 Q.rear =(Q.rear+1)%MAXQSIZE; //队尾指针后移 return OK; printf("队列已满, 不能入队\n"); return ERROR; Q.base=(int*)malloc(MAXQSIZE*sizeof(int)); if (!Q.base)exit(OVERFLOW); //存储分配失败 Q.front=Q.rear=0; return OK;

int DeQueue(SqQueue Q)

{

}

//队列长度

int QueueLength(SqQueue Q)

{

}

//队列遍历

int QueueTraverse(SqQueue Q)

{

printf("遍历结果为:"); while (Q.front!=Q.rear) { } printf ("\n"); printf("%d ",Q.base[Q.front]); Q.front=(Q.front+1)%MAXQSIZE; return((Q.rear-Q.front+MAXQSIZE)%MAXQSIZE); int e; if(Q.front==Q.rear) //判断队空 { } e=Q.base[Q.front]; //队头出队 printf("输出的出队元素为:"); printf("%d\n",e); Q.front=(Q.front+1)%MAXQSIZE; //队头下表后移 return OK; printf("队列已为空\n"); return ERROR;

} return OK;

int main()

{

}

2、 链式栈 #include

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -2 int n; SqQueue Q; InitQueue(Q); printf("*输入1为入队*\n"); printf("*输入2为出队*\n"); printf("*输入3为队列长度*\n"); printf("*输入4为遍历*\n"); printf("*输入0为退出*\n"); printf("*****************\n"); while(scanf("%d",&n),n) { } return 0; switch(n) { case 1:EnQueue(Q);break; case 2:DeQueue(Q);break; case 3:printf("队列长度为%d\n",QueueLength(Q));break; case 4:QueueTraverse(Q);break; }

typedef int Status;

typedef int SElemType;

typedef struct node

{

SElemType data;

struct node *next;}SLnode,*SLinkList;

typedef struct

{

SLinkList top,base;

int len;

}S_LinkList;

//栈的初始化

Status Creat_S(S_LinkList &S)

{ int n;

SLinkList p,q;

printf("栈的初始化,请输入数据,以-1结束:\n");

S.top=(SLinkList )malloc(sizeof(SLnode));

S.base=(SLinkList )malloc(sizeof(SLnode));

S.top->next=S.base;

q=S.base;

S.len=0;

while(scanf("%d",&n),n!=-1)

{

p=(SLinkList )malloc(sizeof(SLnode));

p->data=n;

S.top->next=p; p->next=q;

q=p;

S.len++;

}

q=S.top->next;

while(q!=S.base)

{

printf("%d\n",q->data);

q=q->next;

}

printf("*****\n");

return OK;

}

//进栈

Status Push_S(S_LinkList &S)

{

int e;

printf("请输入进栈元素:");

scanf("%d",&e);

SLinkList p,q;

q=S.top->next;

p=(SLinkList )malloc(sizeof(SLnode));

p->data=e;

S.top->next=p;

p->next=q;

q=p;

S.len++;

return OK;

}

//出栈

Status Pop_S(S_LinkList &S)

{

SLinkList p;

p=S.top->next;

if(p!=S.base)

printf("出栈元素为%d\n",p->data);

return OK;

}

int main()

{

S_LinkList s;

int a;

printf("*输入1为栈的初始化*\n");

printf("*输入2为入栈*\n");

printf("*输入3为出栈*\n");

printf("*输入0为退出*\n");

printf("************************\n");

while(scanf("%d",&a),a)

{

switch(a)

{

case 1:Creat_S(s);break;

case 2:Push_S(s);break;

case 3:Pop_S(s);break;

}

}

return 0;

}

四 调试情况、设计技巧及体会

为了避免顺序栈的存储结构所带来的在操作中需要移动大量数据的缺点,采用链栈,具有动态特性,不用设置头结点。队列是一种先进后出带的线性表,一个链队列由头指针和尾指针唯一确定,所以建立链表的时候,需要在对头加一个头结点,头指针指向头结点。


相关内容

  • 数据结构导论试题1
    全国2004年10月高等教育自学考试 1.要将现实生活中的数据转化为计算机所能表示的形式,其转化过程依次为( ) A.逻辑结构.存储结构.机外表示 B.存储结构.逻辑结构.机外表示 C.机外表示.逻辑结构.存储结构 D.机外表示.存储结构. ...
  • 片机的电磁阀信号数字滤波算法实现
    电子测量技术 ELECTRoNlC 第31卷第10期2008年10月 MEASUREM[ENTTECHNOLoGY 基于JN5121单片机的电磁阀信号数字滤波算法实现 张志利 郭进军 西安710025) (第二炮兵工程学院兵器发射理论与技术 ...
  • 生产系统仿真实验实验指导书
    生产系统仿真实验 实验指导书 江思定 编写 浙江科技学院经济管理学院管理科学与工程系 2008年7月 生产系统仿真实验指导书 Instruction of production system emulation experiment 一.实 ...
  • 033实验题目:应用传感器设计电子秤
    设计报告 题目:应用传感器设计电子称 系别:电气信息工程系 班级:建筑电气与智能化 --实验题目:应用传感器设计电子秤 摘要: 本实验的主要内容是通过对霍尔氏传感器的应用,设计出一款电子秤,并通过本实验得到该电子秤与标准电子秤之间的误差度. ...
  • 东南大学数据结构 93-20**年
    东南大学93考研题 注意事项 : (1) 答卷上需写清题号,不必抄题 (2) 描述可用你熟悉的一种类高级语言,如类Pascal ,所用主要数据结构及变量的意义须加以注释.必要时算法中应加注释 . 一.回答下列问题 : (共 35分) l 与 ...
  • 理论应力集中系数的有限元求法
    2005年第3期航空兵器2005No. 3 2005年06月AERO WEAPONRY Jun. 2005 理论应力集中系数的有限元求法 董志航,廖志忠 (中国空空导弹研究院,河南洛阳 471009) 摘 要:疲劳计算已经成为现代机械零件强 ...
  • 网络协议分析实验报告
    课 程 设 计 课程设计题目 学 生 姓 名 : 学 号: 专 业: 2014年 6 月 29日 实验1 基于ICMP的MTU测量方法 实验目的 1) 掌握ICMP协议 2) 掌握PING程序基本原理 3) 掌握socket编程技术 4) ...
  • 线性表及其应用实验报告
    数据结构实验报告 实验名称:线性表及其应用 班 级:12级电气本2 学 号:2012081227 姓 名:赵雪磊 指导教师:梁海丽 日 期:2013年9月9日 数学与信息技术学院 一. 实验目的 1.掌握线性表的概念,理解线性表的顺序.链式 ...
  • [数据结构]期末考试题及答案
    2011-2012学年第一学期期末考查 <数据结构>试卷 (答案一律写在答题纸上,在本试卷上做答无效) 一.选择(每题1分,共10分) 1. 长度为n 的线性表采用顺序存储结构,一个在其第i 个位置插入新元素的算法时间复杂度为( ...
  • 电路实训报告
    数字电路 实 验 报 告 姓 名: 田月皎 学 号: [1**********]01 学 院: 信息学院 专 业: 计算机科学与技术 指 导 教 师: 邹 尔宁 协助指导教师: 2011年 12 月 28 日 实验一 常用仪器仪表使用 一. ...