数据结构实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);