电子科技大学软件技术基础实验报告3.docx

上传人:b****8 文档编号:23644509 上传时间:2023-05-19 格式:DOCX 页数:14 大小:16.39KB
下载 相关 举报
电子科技大学软件技术基础实验报告3.docx_第1页
第1页 / 共14页
电子科技大学软件技术基础实验报告3.docx_第2页
第2页 / 共14页
电子科技大学软件技术基础实验报告3.docx_第3页
第3页 / 共14页
电子科技大学软件技术基础实验报告3.docx_第4页
第4页 / 共14页
电子科技大学软件技术基础实验报告3.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

电子科技大学软件技术基础实验报告3.docx

《电子科技大学软件技术基础实验报告3.docx》由会员分享,可在线阅读,更多相关《电子科技大学软件技术基础实验报告3.docx(14页珍藏版)》请在冰豆网上搜索。

电子科技大学软件技术基础实验报告3.docx

电子科技大学软件技术基础实验报告3

电子科技大学通信与信息工程学院

 

标准实验报告

 

(实验)课程名称软件技术基础实验

 

电子科技大学教务处制表

 

电子科技大学

实验报告

一、实验室名称:

校公共机房

二、实验项目名称:

堆栈和队列程序设计

三、实验学时:

4学时

四、实验原理:

使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。

通过上机练习掌握堆栈和链表的建立、插入删除,遍历等方法和过程。

五、实验目的:

1.熟练堆栈和链表的概念和基本操作方法。

2.掌握课程平台使用方法。

六、实验内容:

上机完成所有函数,编程实验,调试运行程序并完成报告。

七、实验器材(设备、元器件):

硬件要求:

普通pc机,1G内存,100G硬盘空间即可。

软件要求:

Windows7,包括C编译器的IDE。

八、实验步骤、实验编程与运行结果:

●现在列出4个题目的代码:

//第一题:

#include

#include

#defineelemtypeint

typedefstructs_tack

{

intlength;

inttop;

}stackt;

typedefstructstack

{

elemtypedata;

structstack*next;

}stack_t;

stack_t*initstack()

{

stack_t*top;

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

top->next=NULL;

top->data=0;

returntop;

}

voiddisplay(stack_t*head)

{

stack_t*p;

printf("当前链栈的数据元素:

\n");

for(p=head->next;p!

=NULL;p=p->next)//top为头结点,不存放数据

printf("%d",p->data);

printf("\n");

}

voidpush(stack_t*top,elemtypex)

{

stack_t*p;

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

p->data=x;

p->next=top->next;

top->next=p;

}

voidpop(stack_t*top)

{

stack_t*t,*x;

printf("出栈元素:

%d\n",top->next->data);

x=top->next;

t=x;

top->next=top->next->next;

free(t);

}

intmain()

{

stack_t*top=NULL;

intt;

top=initstack();

while

(1)

{

printf("请输入新的链栈元素:

");

scanf("%d",&t);

if(t==0)break;

push(top,t);

}

display(top);

pop(top);

display(top);

pop(top);

display(top);

}

//第二题

#include

#include

#defineN20

typedefstruct

{

intdata[N];

intfront,rear;

}queue_type;

voidcreate(queue_type*s)

{

s->data[0]=2;

s->data[1]=3;

s->data[2]=-4;

s->data[3]=6;

s->data[4]=-5;

s->data[5]=8;

s->data[6]=-9;

s->data[7]=7;

s->data[8]=-10;

s->data[9]=20;

s->front=0;

s->rear=10;

}

voidenqueue(queue_type*q,inta)

{

if(((q->rear)+1)%N==q->front)printf("队列已满");

else

{

q->rear=(q->rear+1)%N;

q->data[q->rear-1]=a;

}

}

intdequeue(queue_type*q)

{

if(q->front==q->rear)printf("队列为空");

else

{

q->front=(q->front+1)%N;

return(q->data[q->front-1]);

}

}

voidshow(queue_type*q,inta,intb)

{

inti,flag=0;

printf("\n队列元素:

\n");

if(a>=b)flag=1;

for(i=a;i

printf("%d",q->data[i]);

printf("\n");

}

voidaa(queue_type*q)

{

intdequeue(queue_type*q);

intlength;

length=(q->rear)-(q->front);

for(;length>0;length--)

{

if(q->data[q->front]<0)

{

q->front=(q->front+1)%N;

printf("\n负数出队:

%d",q->data[q->front-1]);

}

else

{

printf("\n正数插入队尾:

%d",q->data[q->front]);

q->front=(q->front+1)%N;

q->rear=q->rear+1;

q->data[q->rear-1]=q->data[q->front-1];

}

}

}

intmain()

{

inta;

queue_typet;

create(&t);

show(&t,t.front,t.rear);

printf("\n执行出队操作,出队元素:

%d\n",dequeue(&t));

show(&t,t.front,t.rear);

printf("\n执行入队操作,请输入入队元素:

");

scanf("%d",&a);

enqueue(&t,a);

show(&t,t.front,t.rear);

printf("\n执行aa函数:

");

aa(&t);

show(&t,t.front,t.rear);

}

//第三题

#include

#include

#defineelemtypeint

#definemaxnum100

typedefstructstack

{

elemtypedata[maxnum];

inttop0;

inttop1;

intlength0;

intlength1;

}stack_type;

voidpush(stack_type*ss,elemtypex,intflag)

{

inti;

if(flag==0)

{

for(i=ss->length0+1;i>=0;i--)

ss->data[i]=ss->data[i-1];

ss->data[0]=x;

ss->length0++;

}

else

{

for(i=maxnum-ss->length1;i<=99;i++)

ss->data[i-1]=ss->data[i];

ss->data[maxnum-1]=x;

ss->length1++;

}

}

voidpop(stack_type*ss,intflag)

{

inti,j;

if(flag==0)

{

for(i=0;i<(ss->length0-1);i++)

ss->data[i]=ss->data[i+1];

ss->length0--;

}

else

{

j=ss->length1;

for(i=maxnum-1;j>1;j--,i--)

ss->data[i]=ss->data[i-1];

ss->length1--;

}

}

voidshow(stack_type*ss,intflag)

{

inti;

if(flag==0)

{

printf("0号链表如下:

\n");

for(i=0;ilength0;i++)

printf("%d",ss->data[i]);

printf("\n");

}

else

{

printf("1号链表如下:

\n");

for(i=maxnum;i>(maxnum-ss->length1);i--)

printf("%d",ss->data[i-1]);

printf("\n");

}

}

intmain()

{

stack_types;

intt,flag,i;

s.length0=0;

s.length1=0;

s.top0=0;

s.top1=99;

while

(1)

{

printf("请输入新的栈元素:

");

scanf("%d",&t);

if(t==0)break;

printf("请选择操作的栈:

");

scanf("%d",&flag);

push(&s,t,flag);

}

show(&s,0);show(&s,1);

printf("分别弹出每个栈一次,结果如下:

\n");

pop(&s,0);pop(&s,1);

show(&s,0);show(&s,1);

}

//第四题

#include

#include

#defineN10

typedefstruct

{

intdata[N];

intfront,rear;

inttag;//tag=1,满;tag=0,不满

}queue_type;

voidcreate(queue_type*s)

{

s->data[0]=2;

s->data[1]=3;

s->data[2]=-4;

s->data[3]=6;

s->data[4]=-5;

s->data[5]=8;

s->data[6]=-9;

s->data[7]=7;

s->data[8]=-10;

s->data[9]=20;

s->front=0;

s->rear=9;

s->tag=1;

}

voidenqueue(queue_type*q,inta)

{

if(q->tag==0)

{

if((q->rear-q->front+1)%N==9)q->tag=1;

q->rear=(q->rear+1)%N;

q->data[q->rear]=a;

}

elseprintf("队满,无法入队");

}

intdequeue(queue_type*q)

{

q->front=(q->front+1)%N;

q->tag=0;

return(q->data[q->front-1]);

}

voidshow(queue_type*q,inta,intb,intta)

{

inti,flag=0;

printf("\n队列元素:

\n");

if(a

for(i=a;i<=b;i++)

printf("%d",q->data[i]);

if(a>=b)

{

for(i=a;i

printf("%d",q->data[i]);

for(i=0;i<=b;i++)

printf("%d",q->data[i]);

}

if(ta==1)printf("\n队满\n");

elseprintf("\n");

}

intmain()

{

inta;

queue_typet;

create(&t);

show(&t,t.front,t.rear,t.tag);

printf("\n执行出队操作,出队元素:

%d\n",dequeue(&t));

show(&t,t.front,t.rear,t.tag);

printf("\n执行入队操作,请输入入队元素:

");

scanf("%d",&a);

enqueue(&t,a);

show(&t,t.front,t.rear,t.tag);

}

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

当前位置:首页 > 工作范文 > 行政公文

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

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