南京信息工程大学实验(实习)报告
实验(实习)名称数据结构实验(实习)日期 2011-11-9得分指导教师周素萍
系 公共管理专业信息管理与信息系统年级班次 学号2010230700
3实验二数据结构第二次实验要求(链表)
【实验目的】
1、链表的基本操作及 C 语言实现
【实验要求】
1、用 C 语言建立自己的链表结构的程序库,实现链表的基本操作。
2、对链表表示的集合,集合数据由用户从键盘输入(数据类型为整型),建立相应的顺序 表,且使得数据按从小到大的顺序存放,将两个集合的并的结果存储在一个新的线性表集合 中,并输出。
3、撰写实验报告并附上集合操作的程序和结果。
【实验内容】
1、根据教材定义的链表结构,用 C 语言实现链表结构的创建、插入、删除、查找等操作;
2、利用上述链表操作实现如下程序:建立两个链表表示的集合(集合中无重复的元素),并求这样的两个集合的并。
【实验结果】
[实验数据、结果、遇到的问题及解决]
一、Status DeleteAndInsertSub(LinkList &la,LinkList &lb,int i,int j,int len) {
LinkList p,q,s,prev=NULL; int k=1; if(inext; k++;
}
// 在la表中查找第i+len-1个结点 q=p; k=1; while(q&&knext; else prev->next=q->next; // 将从la中删除的结点插入到lb中 if(j=1){} else{} return OK; s=lb;} if(!s)return INFEASIBLE; q->next=s->next; s->next=p; //完成插入 k=1; q->next=lb; lb=p; q=p->next; k++; while(s&&knext; k++;
二、// 将合并逆置后的结果放在C表中,并删除B表
Status ListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C) {
LinkList pa,pb,qa,qb,pt; pa=A; pb=B; qa=pa; qb=pb; // 保存pa的前驱指针 // 保存pb的前驱指针 pa=pa->next; pb=pb->next; A->next=NULL; C=A; while(pa&&pb){ if(pa->data
qa->next=pa;
free(pt);
}
else
if(pa->data>pb->data){pt=pb;
pb=pb->next;qb->next=pb;free(pt);}
else{
qa=pa;
pa=pa->next;}
}
while(pa){
pt=pa;
pa=pa->next;
qa->next=pa;
free(pt);
}
while(pb){
pt=pb;
pb=pb->next;
qb->next=pb;
free(pt);
}
pb=B;
free(pb);
return OK;
}