实验二栈队列的实现实验报告Word文件下载.docx

上传人:b****1 文档编号:15398543 上传时间:2022-10-30 格式:DOCX 页数:15 大小:67.66KB
下载 相关 举报
实验二栈队列的实现实验报告Word文件下载.docx_第1页
第1页 / 共15页
实验二栈队列的实现实验报告Word文件下载.docx_第2页
第2页 / 共15页
实验二栈队列的实现实验报告Word文件下载.docx_第3页
第3页 / 共15页
实验二栈队列的实现实验报告Word文件下载.docx_第4页
第4页 / 共15页
实验二栈队列的实现实验报告Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

实验二栈队列的实现实验报告Word文件下载.docx

《实验二栈队列的实现实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验二栈队列的实现实验报告Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

实验二栈队列的实现实验报告Word文件下载.docx

1.#include<

iostream.h>

#include<

conio.h>

stdlib.h>

constSTACK_INIT_SIZE=100;

//存储空间初始分配量

constSTACKINCREMENT=10;

//存储空间分配增量

typedefstruct{

int*base;

//在构造之前和销毁之后,base的值为NULL

int*top;

//栈顶指针

intstacksize;

//当前已分配的存储空间,以元素为单位

}SqStack;

voidInitStack(SqStack&

S){

//构造一个空栈S

S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));

if(!

S.base)

exit(0);

//存储分配失败

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

//cout<

<

"

初始化完毕"

endl;

}//InitStack

voidGetTop(SqStackS,int&

e){

//若栈不空,则用e返回S的栈顶元素,并返回OK;

否则返回ERROR

if(S.top==S.base)

{cout<

此栈为空!

!

}

e=*(S.top-1);

cout<

e<

//cout<

取值结束"

}//GetTop

voidPush(SqStack&

S,inte){

//插入元素e为新的栈顶元素

if(S.top-S.base>

S.stacksize){//栈满,追加存储空间

S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));

新分配空间失败!

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

*S.top++=e;

插入元素成功"

}//Push

voidPop(SqStack&

S,int&

//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;

if(S.base==S.top)

此栈为空栈,无法删除!

e=*--S.top;

删除成功!

}//Pop

voidClearStack(SqStack&

//把S置为空栈

cout<

此栈已经为空!

}//ClearStack

voidmain(){

SqStackStack;

intm,n,x,y,z,i=0;

InitStack(Stack);

请输入您要建立的栈的大小:

cin>

>

n;

Stack.stacksize=n;

do{

请选择操作:

"

1,进栈2,出栈3,查看栈顶值4,清空栈5,退出"

m;

switch(m){

case1:

请输入进栈值:

cin>

z;

if(i==Stack.stacksize)

{

cout<

Sorry!

endl<

栈溢出!

此程序将退出!

exit(0);

}

Push(Stack,z);

i++;

break;

case2:

Pop(Stack,x);

x<

出栈"

case3:

栈顶值为:

GetTop(Stack,y);

case4:

ClearStack(Stack);

case5:

Exit!

default:

输入错误!

此程序将退出!

}//switch

}while(m!

=5);

getch();

}

2.#include<

iomanip.h>

//链式栈

typedefstructStack{

Stack*next;

intdata;

}Stack,*SLink;

SLinktop;

intlength;

//构造一个空栈

S.top=NULL;

//设栈顶指针的初值为"

空"

S.length=0;

//空栈中元素个数为

//在栈顶之上插入元素e为新的栈顶元素

SLinkp;

p=newStack;

//建新的结点

p->

data=e;

next=S.top;

S.top=p;

++S.length;

//若栈不空,则删除S的栈顶元素,用e返回其值

S.top)

此栈为空栈!

e=S.top->

data;

S.top=S.top->

next;

voidGetTop(SqStack&

//若栈不空,取栈顶元素,用e返回其值

此栈为空栈!

//

//需改正!

if(i==n)

//队空、入队和出队

intn=0;

typedefstructQ{

Q*next;

}Q,*QLink;

voidInitQ(QLink&

q){

//构造一个队列

q->

next=q;

}//InitQ

voidPush(QLink&

q,int&

//入队

QLinkp;

p=newQ;

next=q->

next=p;

n++;

voidOutQ(QLink&

//出队

QLinkt;

t=newQ;

p=q;

inti;

for(i=0;

i<

=n;

i++){

if(p->

next->

data==e)

{

t=p->

p->

next=t->

deletet;

break;

}//if

p=p->

}//for

if(i==(n+1)){

您所输入的值不存在!

}//OutQ

voidClearQ(QLink&

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

当前位置:首页 > 求职职场 > 职业规划

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

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