山东大学数据结构第二次实验实验报告Word下载.docx

上传人:b****2 文档编号:15118510 上传时间:2022-10-27 格式:DOCX 页数:17 大小:111.06KB
下载 相关 举报
山东大学数据结构第二次实验实验报告Word下载.docx_第1页
第1页 / 共17页
山东大学数据结构第二次实验实验报告Word下载.docx_第2页
第2页 / 共17页
山东大学数据结构第二次实验实验报告Word下载.docx_第3页
第3页 / 共17页
山东大学数据结构第二次实验实验报告Word下载.docx_第4页
第4页 / 共17页
山东大学数据结构第二次实验实验报告Word下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

山东大学数据结构第二次实验实验报告Word下载.docx

《山东大学数据结构第二次实验实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《山东大学数据结构第二次实验实验报告Word下载.docx(17页珍藏版)》请在冰豆网上搜索。

山东大学数据结构第二次实验实验报告Word下载.docx

stdio.h"

stdlib.h"

malloc.h"

string.h"

typedefstructnode//定义一个栈的结构

{

intdata;

structnode*pNext;

//pNext为指向栈中下一个空间的指针

}Node,*pNode;

typedefpNodeStack;

StackInitStack();

//初始化栈

voidCreateStack(StackTop);

//生成栈

boolEmpty(StackTop);

//判断栈是否为空

voidPush(StackTop,intn);

//进行压栈操作

voidPop(StackTop);

//进行出栈操作

voidTraverseStack(StackTop);

//遍历栈的函数

voidDeleteStack(StackTop);

//清空栈的函数

intmain()//主函数

{

intn;

charstr[6];

//定义数组,存储操作指令

StackTop=NULL;

//初始化Top为NULL

Top=InitStack();

CreateStack(Top);

//生成栈

TraverseStack(Top);

//遍历栈

printf("

请输入下一步操作指令(push,poporend):

"

);

while

(1)

scanf("

%s"

str);

//获取操作指令

if(strcmp(str,"

push"

)==0)

{

请输入入栈的元素:

%d"

&

n);

Push(Top,n);

//进栈操作

}

pop"

Pop(Top);

//出栈操作

end"

break;

//跳出循环

)!

=0&

&

strcmp(str,"

=0)

输入指令错误,请重新输入指令:

}

DeleteStack(Top);

//释放栈空间

return0;

}

StackInitStack()//进行栈的初始化的函数

StackTop=(Stack)malloc(sizeof(Node));

//分配内存空间给栈顶

if(Top==NULL)

动态分配内存失败\n"

exit

(1);

初始化栈成功\n"

Top->

pNext=NULL;

//栈顶指针的指向置为NULL;

returnTop;

voidCreateStack(StackTop)//生成栈

intLEN,x;

StackBottom=Top;

//令Top和Bottom指向同一空间

Bottom->

请输入想要入栈的元素个数:

LEN);

for(inti=0;

i<

LEN;

i++)

请输入第%d个元素(从栈顶到栈底):

i+1);

x);

StackpNew=(Stack)malloc(sizeof(Node));

pNew->

data=x;

//将输入的数放在栈data单元中

pNext=pNew;

//Bottom指向新分配空间的单元

//令pNew指向NULL

Bottom=pNew;

//让新分配空间的单元成为栈底

}

生成栈成功\n"

boolIsEmpty(StackTop)//判断栈是否为空

returnTop->

pNext==NULL;

voidPush(StackTop,intn)//进行进栈操作的函数

//定义一个新节点,并分配内存空间

if(pNew==NULL)

未能动态分配内存,进栈失败\n"

return;

data=n;

pNext=Top->

pNext;

voidPop(StackTop)//进行出栈操作函数

Stackp=Top->

if(IsEmpty(Top)==true)//判断栈是否为空,为空就不能进行出栈操作

栈为空,Pop失败\n"

return;

else

弹出的栈顶元素为:

%d\n"

p->

data);

//显示出栈元素

pNext=p->

free(p);

voidTraverseStack(StackTop)//遍历栈,获取栈中的数值

现在栈中的元素从栈顶到栈底依次为:

Stackp=Top->

if(p==NULL)printf("

栈空"

while(p!

=NULL)

%d"

p=p->

\n"

voidDeleteStack(StackTop)//释放栈空间

Stackp,q;

p=Top->

while(p!

=NULL)

{

q=p->

free(p);

p=q;

pNext=NULL;

实验结果:

1)生成栈

①初始化栈。

②生成栈成功。

输入push,进行入栈操作,得到新的栈序列。

3)Pop

①输入pop,进行出栈操作,弹出栈顶元素9,并且得到新的栈序列。

②如果不断进行pop操作,当栈为空时会出现pop失败。

4)其余操作

①结束进程

输入指令end可以结束进程,不会出现要求输入下一步指令。

②输入错误的指令

若在指令输出端输入错误指令,则要求重新输入指令直到输入正确指令

2.队列(循环数组实现)

#definemaxsize11

typedefstructpQueue

intqueue[maxsize];

intrear;

//最后元素的位置

intfront;

//最前元素的位置的前一个位置

}Aqueue,*Queue;

QueueQueueInit();

//初始化队列

voidCreateQueue(QueueQ,intn);

//生成队列

intIsFull(QueueQ);

//判断队列是否为满

intIsEmpty(QueueQ);

//判断队列是否为空

intEnQueue(QueueQ,intx);

//入队

intDeQueue(QueueQ);

//出队

voidTraverseQueue(QueueQ);

//遍历队列

intn,x;

charstr[10];

QueueQ=QueueInit();

请输入想要入队元素个数(小于%d):

maxsize);

while

(1)

if(n<

maxsize)break;

请重新输入想要入队元素个数(小于%d):

CreateQueue(Q,n);

队列中的元素依次为:

TraverseQueue(Q);

请输入下一步操作指令(Enqueue,Dequeueorend):

Enqueue"

请输入想要入队的元素:

if(EnQueue(Q,x))//入队

元素%d入队后队列中元素依次为:

x);

Dequeue"

if(IsEmpty(Q)==0)

元素%d出队后队列中元素依次为:

DeQueue(Q));

//出队

else

队列为空,出队失败\n"

st

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

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

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