淮海工学院数据结构第二次实验Word格式.docx

上传人:b****1 文档编号:15335840 上传时间:2022-10-29 格式:DOCX 页数:23 大小:285.49KB
下载 相关 举报
淮海工学院数据结构第二次实验Word格式.docx_第1页
第1页 / 共23页
淮海工学院数据结构第二次实验Word格式.docx_第2页
第2页 / 共23页
淮海工学院数据结构第二次实验Word格式.docx_第3页
第3页 / 共23页
淮海工学院数据结构第二次实验Word格式.docx_第4页
第4页 / 共23页
淮海工学院数据结构第二次实验Word格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

淮海工学院数据结构第二次实验Word格式.docx

《淮海工学院数据结构第二次实验Word格式.docx》由会员分享,可在线阅读,更多相关《淮海工学院数据结构第二次实验Word格式.docx(23页珍藏版)》请在冰豆网上搜索。

淮海工学院数据结构第二次实验Word格式.docx

7)希望大家过一个丰富多彩的国庆节,抽出一定时间圆满完成实验,并于第6周周二以前按时提交实验报告,逾期按照旷交处理。

2实验内容或题目

(一)必做题:

1、实现顺序栈的创建(初始化)、压入(插入)操作(数据、弹出(删除)元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并给出栈的每次操作变化状态;

2、实现链栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),要求给出栈的操作变化过程;

3、实现循环队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并实时给出队列的操作变化状态;

4、实现链式队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并实时给出队列的操作变化状态;

(注意:

必做题需用一个主程序实现所有功能)

(二)选做题(视自己能力而定,数量不限):

任选下列一个或多个栈或队列应用源程序(已经发给学委),并阅读、调试和运行程序,而后给出程序功能分析和实例运行演示;

1、实现表达式求值算法程序;

2、用递归算法实现汉诺塔问题算法程序;

3、使用循环队列实现打印杨辉三角形算法程序。

3实验步骤与源程序

#include<

stdio.h>

stdlib.h>

#include<

windows.h>

#defineTRUE1

#defineFALSE0

#defineStack_Size50

#defineMAXSIZE5

voidmainmenu();

/*********************************************/

/*顺序栈*/

typedefstruct{

intelem[Stack_Size];

inttop;

}SeqStack;

/*链栈*/

typedefstructnode

{

intdata;

structnode*next;

}LinkStackNode;

/*循环队列*/

intelement[MAXSIZE];

intfront;

intrear;

}SeqQueue;

/*链式队列*/

typedefstructNode{

structNode*next;

}LinkQueueNode;

LinkQueueNode*front;

LinkQueueNode*rear;

}LinkQueue;

/********************顺序栈************************/

/*构造一个空栈S*/

voidInitStack(SeqStack*S)

S->

top=-1;

}

/*进栈*/

intPush(SeqStack*S,intx)

if(S->

top==(Stack_Size-1))

return(FALSE);

/*栈已满*/

top++;

elem[S->

top]=x;

return(TRUE);

/*出栈*/

intPop(SeqStack*S,int*x)

{

/*将栈S的栈顶元素弹出,放到x所指的存储空间中*/

top==-1)/*栈为空*/

else

{

*x=S->

top];

S->

top--;

/*修改栈顶指针*/

return(TRUE);

}

/*取栈顶元素*/

intGetTop(SeqStack*S,int*x)

/*将栈S的栈顶元素弹出,放到x所指的存储空间中,但栈顶指针保持不变*/

*x=S->

}

/**************************************************/

/********************链栈**************************/

/*初始化*/

voidInitStack1(LinkStackNode*top)

{//构造一个空栈

top=(LinkStackNode*)malloc(sizeof(LinkStackNode));

if(!

top)

printf("

OVERFLOW\n"

);

top=NULL;

/*进栈操作。

*/

intPush1(LinkStackNode*top,intx)/*将数据元素x压入栈top中*/

LinkStackNode*temp;

temp=(LinkStackNode*)malloc(sizeof(LinkStackNode));

if(temp==NULL)

/*申请空间失败*/

temp->

data=x;

next=top->

next;

top->

next=temp;

/*修改当前栈顶指针*/

/*出栈操作。

intPop1(LinkStackNode*top,int*x)

/*将栈top的栈顶元素弹出,放到x所指的存储空间中*/

LinkStackNode*temp;

temp=top->

if(temp==NULL)/*栈为空*/

next=temp->

*x=temp->

data;

free(temp);

/*释放存储空间*/

/******************循环队列*************************/

voidInitQueue(SeqQueue*Q)

/*将*Q初始化为一个空的循环队列*/

Q->

front=Q->

rear=0;

intEnterQueue(SeqQueue*Q,intx)

/*将元素x入队*/

if((Q->

rear+1)%MAXSIZE==Q->

front)/*队列已经满了*/

element[Q->

rear]=x;

rear=(Q->

rear+1)%MAXSIZE;

/*重新设置队尾指针*/

/*操作成功*/

intDeleteQueue(SeqQueue*Q,int*x)

/*删除队列的队头元素,用x返回其值*/

if(Q->

front==Q->

rear)/*队列为空*/

*x=Q->

front];

front=(Q->

front+1)%MAXSIZE;

/*重新设置队头指针*/

/********************************************************/

/**********************链式队列**************************/

intInitQueue1(LinkQueue*O)

/*将Q初始化为一个空的链队列*/

O->

front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));

if(O->

front!

=NULL)

O->

rear=O->

front;

front->

next=NULL;

elsereturn(FALSE);

/*溢出!

intEnterQueue1(LinkQueue*O,intx)

/*将数据元素x插入到队列Q中*/

LinkQueueNode*NewNode;

NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));

if(NewNode!

NewNode->

rear->

next=NewNode;

rear=NewNode;

else

intDeleteQueue1(LinkQueue*O,int*x)

/*将队列Q的队头元素出队,并存放到x所指的存储空间中*/

LinkQueueNode*p;

front==O->

rear)

p=O->

next=p->

/*队头元素p出队*/

rear==p)/*如果队中只有一个元素p,则p出队后成为空队*/

*x=p->

free(p);

voidmainmenu1(){

intchioce;

intm;

intx1,x2;

SeqStacks;

while(chioce)

printf("

**************请输入你的选择**************\n"

**************1:

初始化操作**************\n"

**************2:

进栈操作**************\n"

printf

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1