软件技术基础上机实验三_精品文档Word文件下载.docx
《软件技术基础上机实验三_精品文档Word文件下载.docx》由会员分享,可在线阅读,更多相关《软件技术基础上机实验三_精品文档Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
![软件技术基础上机实验三_精品文档Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/6/f430eac0-e803-4fcc-b235-dbf86d68df75/f430eac0-e803-4fcc-b235-dbf86d68df751.gif)
Now,thoserecordsare:
\n"
);
p=head;
if(head!
=NULL)
{
do{
printf("
%4d"
p->
data);
p=p->
next;
}
while(p!
=NULL);
}
intpush(lstack_type*lp,intx)
{node_type*p;
p=(node_type*)malloc(LEN);
if(p!
{ p->
data=x;
p->
next=lp->
top;
lp->
top=p;
lp->
length++;
return
(1);
}
elsereturn(0);
}
intpop(lstack_type*lp)
{
node_type*p;
intx;
if(lp->
top==NULL){
printf("
stackisunderflow"
return(0);
}
else{
x=lp->
top->
data;
p=lp->
top=lp->
length--;
free(p);
return(true);
}
}
voidmain()
lstack_type*p1;
inta=0,b=0,m=0;
p1=create_list();
\ninputthenumbers:
scanf("
%d"
&
m);
while(m!
=0)
{push(p1,m);
scanf("
}
print(p1->
top);
pop(p1);
pop(p1);
print(p1->
三:
典型测试数据(输入):
246943
应输出(上机前自己分析的结果):
439642出栈后642
四:
上机时遇到的问题:
①不能输出解决办法:
更改函数返回类型
②编译出错解决办法:
输入数据时“&
”不要忘
五:
实际运行结果
六、小结&
体会
链栈的使用很方便,比顺序栈更好操作。
题目二:
一、程序流程说明
(1)创建一个循环队列
(2)编写出队列函数,入队列函数,和负数删除函数
(3)编写主函数
#include<
#defineN20
typedefstruct
{intdata[N];
intfront,rear;
}queue_type;
voidcreate_list(queue_type*lp)
inti,elem;
lp->
front=0;
lp->
rear=0;
\npleaseinputdatasofthelist\n"
lp->
data[0]=NULL;
for(i=1;
i<
N;
i++)
scanf("
%d"
&
elem);
if(elem==-1)break;
lp->
data[i]=elem;
rear++;
voidprintlist(queue_type*lp)
inti,j=0;
\nTheserecordsare:
if(lp->
rear<
printf("
Nodata!
return;
else
for(i=lp->
front+1;
=lp->
rear;
printf("
%4d"
lp->
data[i]);
voidenqueue(queue_type*q,intx)
q->
rear=(q->
rear+1)%N;
data[q->
rear]=x;
}
intdequeue(queue_type*q)
inti;
i=q->
front;
q->
front=(q->
front+1)%N;
/*printlist(q);
*/
return(q->
data[i+1]);
voidaa(queue_type*lp){
inti,l=lp->
rear,j;
printf("
long=%4d"
lp->
rear);
for(i=lp->
data[lp->
front+1];
i<
=l+1;
i++){
j=dequeue(lp);
if(j>
0)
enqueue(lp,j);
}
main()
queue_typep;
create_list(&
p);
printlist(&
aa(&
printf("
afterdeletetelistis:
printlist(&
三、测试数据*
输入:
23-46-58-97-1020(-1)
应输出:
2368720
①负数不能完全删除解决办法:
更改循环,使每一个数都能与0比较,是负数则删除(调用出队列函数)
五、实际运行结果:
循环队列的使用能是空间更加合理的被利用。
题目三:
(1)编写两个pop函数,两个pus函数
(2)编写主函数
#defineM10
#definetrue1
#definefalse0
typedefstruct{
intdata[M];
inttop1,top2;
}stack_type;
intpush1(stack_type*s)
intx;
请输入数据(以’0‘结束):
scanf("
x);
while(x!
=0&
&
s->
top1<
=s->
top2)
{
s->
data[s->
top1]=x;
s->
top1=s->
top1+1;
scanf("
if(s->
top1==s->
printf("
栈已满!
return;
intpush2(stack_type*s)
top2]=x;
top2=s->
top2-1;
intpop1(stack_type*s)
intout;
if(s->
top1<
0)return(false);
else
out=s->
top1-1];
s->
top1-1;
return(out);
intpop2(stack_type*s)
top2>
=M)return(false);
top2+1];
top2+1;
inti,j,k;
stack_typeas,*lp;
lp=&
as;
lp->
top1=0;
top2=M-1;
while
(1)
请选择你要操作的栈:
输入“1”或“2”\n"
返回“0”\n"
scanf("
i);
if(i==1)
{
printf("
请选择你要进行的操作:
入栈“1”;
出栈“2”\n"
scanf("
k);
switch(k)
{
case1:
push1(lp);
break;
case2:
j=pop1(lp);
printf("
出栈元素为:
%d\n"
j);
default:
printf("
输入错误!
}