算法与数据结构实验报告模版项目一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法与数据结构实训(验)报告
班级:计算机3101 姓名:吴华棉座号:41 指导教师:林扬武成绩:
项目一:线性表的应用
一、实验目的:
1、掌握线性表的特点;
2、掌握线性表顺序存储结构和链式存储结构的基本运算;
3、掌握线性链表的创建、插入、删除和显示线性表中元素等基本操作;
二、实验内容:
1、顺序表的应用
有两个有序顺序表La和Lb,其数据元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表Lc,并保持Lc中数据元素也按升序排列。
2、链表的应用
创建一个字符型的单链表,并设计一个菜单,可以分别实现链表的相关操作,例如插入、删除等
三:程序源代码:
1、顺序表合并-源代码:
int Insert(Sqlist *L,int i,int x) //插入元素
{ int j;
if(i<0||i>L->length+1)
{ printf("Error!");
return FALSE;}
if(L->length>=MAXNUM-1)
{ printf("overflow1");
return FALSE;}
for(j=L->length;j>=i;j--)
L->List[j+1];
L->List[i]=x;
L->length++;
return TRUE;
}
int Delete(Sqlist L,int i) //删除元素
{ int j;
if(i<0||i>L.length)
{ printf("Error!");
return FALSE;}
for(j=i+1;j<=L.length;j++)
L.List[j-1]=L.List[j];
L.length--;
return TRUE;
}
void Merge(Sqlist La, Sqlist Lb, Sqlist *Lc) //两个有序表合并{ int i,j,k,a,b;
int La_length,Lb_length; /*表La,Lb的最大下标*/
i=j=0;k=-1;
La_length=Length(La)-1;Lb_length=Length(Lb)-1;
Initiate(Lc); /*初始化表Lc*/
while (i<=La_length&&j<=Lb_length)
{ a=Get(La,i);b=Get(Lb,j);
if(a
else {Insert(Lc,++k,b); ++j;}
} /*将La和Lb的元素插入到Lc中*/
while (i<=La_length)
{ a=Get(La,i);Insert(Lc,++k,a); ++i;}
while (j<=Lb_length)
{ b=Get(Lb,j);Insert(Lc,++k,b); ++j;}
}
2、字符链表的操作-源代码:
slnodetype *Get(slnodetype *L,int i)
{/*存取链表中的第i个元素(i>=0)*/
slnodetype *p;
int j=-1;
p=L;
while(p!=NULL&&j
{
p=p->next;
j++;
}
if(j!=i||p==NULL)
return NULL;
else
return p;
}
int Locate(slnodetype *L,char x)
{/*查找定位,查找成功返回该元素的序号,否则返回-1;*/ slnodetype *p;
int i=-1;
p=L;
while(p->next!=NULL&&p->data!=x)
{ p=p->next;i++; }
if(p==NULL||p->data==x)
return i;
else
return -1;
}
int Traverse(slnodetype *L)
{ /*遍历链表,输出链表的元素序列;*/
slnodetype *p;
int i=0;
p=L;
while(p->next!=NULL)
{ p=p->next;i++;
printf("%c ",p->data); }
return i;
}
int Length(slnodetype *L)
{
slnodetype *p;
int i=0;
p=L;
while(p->next!=NULL)
{ i++;p=p->next;}
return i;
}
四、结果:
1、顺序表合并
1)向两组线性表输入大于0的数据元素,其运行结果如图:
则结果符合题意,答案正确。
2)向两组线性表输入小于0的数据元素,其运行结果如图:
则结果符合题意,答案正确。
3)向两组线性表分别输入大于0或小于0的数据元素,其运行结果如图:
则结果符合题意,答案正确。
3、字符链表的操作
首先程序运行主菜单如图所示:
1)创建链表输入数据元素,并以#结束标志,其结果如图: