栈和队列的定义.docx

上传人:b****5 文档编号:4713468 上传时间:2022-12-07 格式:DOCX 页数:8 大小:124.65KB
下载 相关 举报
栈和队列的定义.docx_第1页
第1页 / 共8页
栈和队列的定义.docx_第2页
第2页 / 共8页
栈和队列的定义.docx_第3页
第3页 / 共8页
栈和队列的定义.docx_第4页
第4页 / 共8页
栈和队列的定义.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

栈和队列的定义.docx

《栈和队列的定义.docx》由会员分享,可在线阅读,更多相关《栈和队列的定义.docx(8页珍藏版)》请在冰豆网上搜索。

栈和队列的定义.docx

栈和队列的定义

闽江学院电子系

实验报告

学生姓名:

邓俊辉

班级:

电信2班

学号:

120101003235

课程:

数据结构与算法

一、实验题目:

栈和队列的定义及基本操作

二、实验地点:

A210

三、实验目的:

(1)、熟练掌握栈和队列的特点;

(2)、掌握栈的定义和基本操作,熟练掌握顺序栈的操作及应用;

(3)、掌握对列的定义和基本操作,熟练掌握链式队列的操作及应用,掌握环形队列的入队和出队等基本操作;

(4)、加深对栈结构和队列结构的理解,逐步培养解决实际问题的编程能力;

四、实验内容:

(1)、定义顺序栈,完成栈的基本操作:

空栈、入栈、出栈、取栈顶元素;

实现十进制数与八进制数的转换,十进制数与十六进制数的转换和任意进制之间的转换;

(2)、定义链式队列,完成队列的基本操作:

入队和出队;

 

五、实验环境(使用的软硬件):

VC6.0

六、实验步骤及操作:

(1)10进制数转化为8进制

#include

#include

#defineMAXSIZE100

typedefstructseqstack

{

intdata[MAXSIZE];

inttop;

}seqstack;

voidsetnull(seqstack*s)

{

s->top=-1;

}

 

voidpush(seqstack*s,intx)

{

if((s->top)==MAXSIZE-1)

printf("ERROR!

!

\n");

else

{

s->top++;

s->data[s->top]=x;

}

}

 

intpop(seqstack*s,int*t)

{

if(s->top==-1)returnNULL;

else

return*t=s->data[s->top--];

}

 

intgettop(seqstack*t)

{

if(t->top==-1)

return0;

else

returnt->data[t->top];

}

StackEmpty(seqstack*s)

{

if(s->top==-1)

return1;

else

return0;

}

voidmain()

{

intN,t;

seqstack*s;

s=(seqstack*)malloc(sizeof(seqstack));

setnull(s);

printf("请输入要转换的十进制数:

");

scanf("%d",&N);

while(N)

{

push(s,N%8);

N=N/8;

}

printf("转换后的八进制数:

");

while(!

StackEmpty(s))

{

pop(s,&t);

printf("%d",t);

}

printf("\n");

printf("************感谢使用数制转换程序************\n");

}

 

(2)链队列的实现

#include

#include

#defineN10

typedefstructnode

{

intdata;

structnode*next;

}linknode;

typedefstruct

{

linknode*front,*rear;

}linkqueue;

linkqueueq;

voidiniqueue(linkqueue*q)

{

q->front=(linknode*)malloc(sizeof(linknode));

q->rear=q->front;

q->front->next=NULL;

}

voidaddqueue(linkqueue*q,intx)

{

linknode*p;

p=(linknode*)malloc(sizeof(linknode));

p->data=x;

p->next=NULL;

q->rear->next=p;

q->rear=p;

}

intoutqueue(linkqueue*q)

{

linknode*p;

if(q->rear==q->front)

returnNULL;

else

{

p=q->front;

q->front=q->front->next;

free(p);

returnq->front->data;

}

}

voidmain()

{

inti,a[N],b;

iniqueue(&q);

printf("N=%d",N);

putchar('\n');

printf("请输入N个数:

");

for(i=0;i

{

scanf("%d",&a[i]);

addqueue(&q,a[i]);

}

putchar('\n');

printf(“出对后的数”);

for(i=0;i

{

b=outqueue(&q);

printf("%d",b);

}

}

 

七、实验结果:

(1)、10进制数转化为8进制

(2)链队列的实现

八、实验总结及心得体会:

感觉就是写的很不好,要有思路。

这次试验程序好多调试不过是因为空间分配问题,以后会多注意的。

九、对本实验过程及方法、手段的改进建议:

printf("转换后的八进制数:

");

while(!

StackEmpty(s))

{

pop(s,&t);

printf("%d",t);

}

printf("\n");

 

报告评分:

指导教师签字:

批阅日期:

注意:

●实验报告以纸质文档形式上交。

实验报告将记入平时成绩;

●每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。

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

当前位置:首页 > 求职职场 > 笔试

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

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