数据结构实验1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的

1、学习线性表的顺序表示和实现,会进行顺序表的插入、删除、合并

2、学习线性表的链式表示和实现,会进行链表的插入、删除、合并

二、实验内容

1、编程实现:(1)在顺序表ajcniydu的第三个位置插入p。(2)删除顺序表ajcniydu第三个位置的元素。

2、编程实现将顺序表acdijtuy和cfklns合并。

3、编程实现:(1)在链表asdfghjkl的第四个位置插入z。(2)删除顺序表asdfghjkl第四个位置元素。

4、编程实现两个有序链表adfi和cefi的合并。

三、实验步骤

1.+

2.代码:

#include

#include

typedef char ElemType;

typedef struct

{

ElemType *elem;

int length;

int listsize;

}SqList;

//定义结构体

void InitList(SqList &L)

{

L.elem=(ElemType*)malloc(10*sizeof(ElemType));

L.length=0;

L.listsize=10;

}//初始化

{

printf("输入字符串:");

int i=0;

for(i;i

{

scanf("%c",&L.elem[i]);

L.length++;

}

} //赋值

void Show(SqList L)

{

int i=0;

printf("字符串:");

for(i;i

printf("%c",L.elem[i]);

printf("\n");

}//显示

int ListInsert(SqList &L, int i, ElemType e)

{

ElemType *p;

if (i < 1 || i > L.length+1)

printf("插入位置不合法!\n");

else

{

ElemType *q = &(L.elem[i-1]);

for (p = &(L.elem[L.length-1]); p>=q; --p) *(p+1) = *p; *q = e;

++L.length;

}

} //插入

int ListDelete(SqList &L,int i)

{

if(i > L.length||i<=0)

printf("位置不合法\n");

else

{

int j = i-1;

for( j;j

L.elem[j] = L.elem[j+1];

L.length--;

}

} // 删除

void Mergelist(SqList La,SqList Lb,SqList &Lc)

{

ElemType *pa,*pb,*pc,*pa_last,*pb_last;

pa = La.elem;

pb = Lb.elem;

pa_last = pa + La.length - 1;

pb_last = pb + Lb.length - 1;

Lc.listsize = Lc.length = La.length + Lb.length;

pc = Lc.elem = (ElemType *)malloc(Lc.length*sizeof(ElemType));

while(pa <= pa_last && pb <= pb_last)

{

if(*pa >= *pb)

*pc++ = *pa++;

else

*pc++ = *pb++;

}

while(pa <= pa_last)

*pc++ = *pa++;

while(pb <= pb_last)

*pc++ = *pb++;

}//合并

int main()

{

SqList La;

InitList(La);

CreateList(La,8);

ElemType e;

int i;

printf("输入插入位置及字符:");

scanf("%d %c",&i,&e);

ListInsert(La,i,e);

Show(La);

printf("\n");

fflush(stdin);

SqList Lb;

InitList(Lb);

CreateList(Lb,8);

Show(Lb);

printf("输入删除位置:");

int j;

scanf("%d",&j);

ListDelete(Lb,j);

Show(Lb);

printf("\n");

fflush(stdin);

SqList L1,L2,L3;

InitList(L1);

InitList(L2);

CreateList(L1,8);

Show(L1);

fflush(stdin);

CreateList(L2,6);

相关文档
最新文档