文档介绍:一、实验目的
1、学****线性表的顺序表示和实现,会进行顺序表的插入、删除、合并
2、学****线性表的链式表示和实现,会进行链表的插入、删除、合并
二、实验内容
1、编程实现:(1)iydu的第三个位置插入p。(2)iydu第三个位置的元素。
2、编程实现将顺序表acdijtuy和cfklns合并。
3、编程实现:(1)在链表asdfghjkl的第四个位置插入z。(2)删除顺序表asdfghjkl第四个位置元素。
4、编程实现两个有序链表adfi和cefi的合并。
三、实验步骤
1.+:
#include<>
#include<>
typedef char ElemType;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
//定义结构体
void InitList(SqList &L)
{
=(ElemType*)malloc(10*sizeof(ElemType));
=0;
=10;
}//初始化
void CreateList(SqList &L,int n)
{
printf("输入字符串:");
int i=0;
for(i;i<n;i++)
{
scanf("%c",&[i]);
++;
}
} //赋值
void Show(SqList L)
{
int i=0;
printf("字符串:");
for(i;i<;i++)
printf("%c",[i]);
printf("\n");
}//显示
int ListInsert(SqList &L, int i, ElemType e)
{
ElemType *p;
if (i < 1 || i > +1)
printf("插入位置不合法!\n");
else
{
ElemType *q = &([i-1]);
for (p = &([-1]); p>=q; --p) *(p+1) = *p;
*q = e;
++;
}
} //插入
int ListDelete(SqList &L,int i)
{
if(i > ||i<=0)
printf("位置不合法\n");
else
{
int j = i-1;
for( j;j<;j++)
[j] = [j+1];
--;
}
} // 删除
void Mergelist(SqList La,SqList Lb,SqList &Lc)
{
ElemType *pa,*pb,*pc,*pa_last,*pb_last;
pa = ;
pb = ;
pa_last = pa + - 1;
pb_last = pb + - 1;
= = + ;
pc = = (ElemType *)malloc(*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