数据结构顺序表和单链表的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一顺序表和单链表的基本操作
一、实验目的
a)掌握线性顺序存储结构的形式与特点;
b)熟练利用顺序存储结构实现线性表的基本操作;
c)熟练掌握顺序存储结构中的算法实现;
d)掌握线性表链式存储结构的特点;
e)熟练利用链式存储结构实现线性表的基本操作;
f)熟练掌握链式存储结构中的算法实现。
二、知识准备
a)线性表顺序结构的表示;
b)顺序表的基本操作:顺序表的建立、查找、插入、删除;
c)线性表链式存储结构的表示;
d)链式表的基本操作:链式表的建立、查找、插入、删除;
链式存储结构表不能随机存取,只能设置一个指针变量,从表头逐步向
后移动来实现插入或删除数据的位置,找到后再进行具体操作。
三、实验内容
1、下面提供的程序实现的是:设有两个按元素值递增有序的顺序表la和lb,
编写程序将la表和lb表归并成一个新的递增有序的顺序表lc(值相同的元素均保留在lc表中)。*/
# include "datastru.h"
# include
void merge_sqlist(SEQUENLIST la,SEQUENLIST lb,SEQUENLIST *lc)
{
/*两有序表合并*/
int i , j , k ;
i = j = k = 1 ;
while( ____i<=st && j<=st___)//la没有到达链表尾部并且lb 也没有到达链表尾部
if( la.datas[i] <= lb.datas[j])//如果la的数据小于lb的数据
{ _____ lc->datas[k]=la.datas[i]____ ;
//就把la的数据放到lc中;注意lc是地址变量 k++ ; i++ ;}
else
{ ____lc->datas[k]=lb.datas[j]____; //否则就把lb的数据放到lc中
k++ ; j++ ;}
while( _____i<=st____ ) //如果la没有到达尾部
{ _____lc->datas[k]=la.datas[i] ____ ; //就把剩余的la数据放到lc后面
k++ ; i++;}
while( ____ j<=st ______ ) //如果lb没有到达尾部
{ ___lc->datas[k]=lb.datas[j]__ ; //就把剩余的lb数据放到lc后面
k++; j++;}
lc->last =st+st;
return;
}
main( )
{ SEQUENLIST la, lb, lc;
int i, k, m;
printf("请输入la顺序表元素,元素为整型量,用空格分开,-99为结束标志: ");
st = 0; i = 0; scanf("%d",&i);
while (i != -99) {/*输入la顺序表元素,建立有序表*/
k = st;
while((k>=1) && ( i for(m = st; m >= k+1; m--) la.datas[m + 1] = la.datas[m]; la.datas[k + 1] = i; st++; scanf("%d",&i);} printf("\n\n请输入lb顺序表元素,元素为整型量,用空格分开,-99为结束标志:"); st = 0; i = 0; scanf("%d",&i); while (i != -99) {/*输入lb顺序表元素,建立有序表*/ k = st; while((k>=1) && ( i for(m = st; m >= k+1; m--) lb.datas[m + 1] = lb.datas[m]; lb.datas[k + 1] = i; st++; scanf("%d",&i); } printf("\nla有序表元素列表:"); for (i = 1; i <= st; i++) printf("% d",la.datas[i]); printf("\n"); printf("\nlb有序表元素列表:"); for (i = 1; i <= st; i++) printf("% d",lb.datas[i]); printf("\n"); merge_sqlist (la, lb, &lc); printf("\n合并后lc有序表元素列表:"); for (i = 1; i <= st; i++) printf(" %d",lc.datas[i]); printf("\n"); } 在做的过程中我所遇到的问题:发现头文件【# include "datastru.h"】 无法被系统识别?在同学的帮助下得出答案:需要将目标程序“另存为”存储为【*.cpp】格式的文件。 2、设L为带头结点的单链表,表中元素值无序,编写程序删除表中值相同的多余元素。*/ #include "datastru.h" #include #include void delete1(LINKLIST *a){