计算机软件实验报告文档格式.docx
《计算机软件实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《计算机软件实验报告文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
2.假设有两个按数据元素值递增有序排列的线性表A和B,均以单链表作为存储结构。
编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)结点空间存放表C。
3.将一个线性表中的值就地逆置。
4.在线性表的顺序存储结构的第一个位置上插入一个元素。
(注意区分链表和顺序表)
五、实验提示
编写一个可运行的程序,建立链表与顺序表,并由用户输入递增有序排列的链表A、链表B、顺序表的内容。
最好有一定的容错功能和友好的界面。
实现实验内容的各项操作并输出操作后的表的内容。
选做:
链表的排序,以实现输入非有序表也可进行内容2的要求。
六、报告要求
1、实验目的
2、实验内容
3、代码
4、调试过程中遇到的问题与解决方法
以打印稿形式于考试时上交。
七、参考代码
*ElemType替换为需要的变量名*
#include<
stdio.i;
}
**********求线性表中第i个元素运算**********
SLink*GetElem(SLink*sq,inti)
{
intj=1;
SLink*p=sq->
next;
if(i<
i||i>
GetLength(sq))
returnNULL;
while(j<
i)
{
p=p->
j++;
}
returnp;
**********按值查找运算**********
SLink*Locate(SLink*sq,ElemTypex,inti)
1||i>
while(p!
=NULL&
&
p->
data!
=x)
**********插入结点运算**********
intInsElem(SLink*sq,ElemTypex,inti)
SLink*p=sq,*s;
s=(SLink*)malloc(sizeof(SLink));
s->
data=x;
next=NULL;
GetLength(sq)+1)
return0;
next=p->
p->
next=s;
return1;
**********删除结点运算**********
intDelElem(SLink*sq,inti)
SLink*p=sq,*q;
return0;
q=p->
next=q->
free(q);
**********输出元素值运算**********
voidDispList(SLink*sq)
=NULL)
printf("
%d\n"
p->
data);
return;
*()
intn,i,j,k;
SLink*L;
*在主函数中添加内容调用自定义函数,并添加适当的函数以完成功能。
*
实验2栈和队列的基本操作
一、实验目的与基本要求
1.掌握栈和队列的顺序存储和链式存储结构
1.掌握栈和队列的特点。
2.掌握栈和队列的基本运算。
5.硬件:
一台微型计算机
6.软件:
操作系统和C语言系统。
确定存储结构后,上机调试实现栈和队列的基本运算。
1.写出栈的入栈和出栈的算法
2.写出队列的入队和出队算法。
编写一个可运行的程序,建立栈与队列,实现入栈、出栈,入队、出队的算法,并由用户选择操作,输出栈与队列的内容。
**********建栈**********
int*init_stack(s,m,top)
int*s;
intm,*top;
if(s!
free(s);
s=malloc(m*sizeof(int));
*top=0;
flag1=1;
returns;
**********入栈**********
voidpush(s,m,top,x)
ints[],x;
if(flag1==0)
尚未建栈\n"
);
return;
}
if(*top==m)
栈满\n"
*top=*top+1;
s[*top-1]=x;
**********退栈**********
voidpop(s,m,top,y)
ints[],*y;
if(*top==0)
**********栈空\n**********\n"
*y=s[*top-1];
*top=*top-1;
**********读栈顶**********
voidtop(s,m,top,y)
空栈\n"
return;
**********建队**********
int*init_queue(q,m,front,rear,s)
int*q;
intm,*front,*rear,*s;
if(q!
free(q);
q=malloc(m*sizeof(int));
*front=m;
*rear=m;
*s=0;
flag2=1;
returnq;
**********入队**********
voidaddcq(q,m,rear,front,s,x)
intq[],x;
intm,*rear,*front,*s;
if((*s==1)&
(*rear==*front))
队满\n"
*rear=*rear+1;
if(*rear==m+1)
*rear=1;
q[*rear-1]=x;
*s=1;
**********退队**********
voiddelcq(q,m,rear,front,s,y)
intq[],*y;
if(flag2==0)
尚未建队\n"
if(*s==0)
队空\n"
*front=*front+1;
if(*front==m+1)
*front=1;
*y=q[*front-1];
if(*front==*rear)
*s=0;
return;
}
运行结果:
实验3二叉树的构造
1.熟练掌握二叉树的构造方法。
3.硬件:
4.软件:
确定存储结构后,上机调试二叉树的构造方法。
设计一个读入一串整数构成一棵二叉树的程序。
(深度至少为2)
编写一个可运行的程序,建立二叉树,由用户输入二叉树的数据。
输出前、中、后序遍历。
stdio.t;
pretrav(bt)
structbtnode*bt;
if(bt!
bt->
d);
pretrav(bt->
lchild);
rchild);
intrav(bt)
intrav(bt->
postrav(bt)
postrav(bt->
intmain()
structbtnode*t;
ints;
while
(1)
请选择\n1、建立二叉树\n2、前序遍历\n3、中序遍历\n4、后序遍历\n5、退出\n"
scanf("
%d"
&
s);
switch(s)
{
case1:
t=creatbt(t,0);
break;
case2:
pretrav(t);
case3:
intrav(t);
case4:
postrav(t);
default