数据结构实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
《数据结构》上机实验2011~2012学年第一学期
数据结构实验报告
031510131
郭文豪
实验一线性表实现与应用
一、实验目的
1.掌握线性表的顺序存储和链接存储结构。
2.了解线性表的应用。
3.分析顺序线性表与链接线性表的差异。
二、实验内容
1.利用顺序线性表实现集合运算AUB。
2.利用向前链表实现集合运算(A-B)U(B-A)。
三、实验程序说明
1.假设集合A和B的元素都是整数,并利用两个线性表la和lb分别存放集合A和B的成员。现依次取出lb中的每个元素,按其值查找线性表la,若la中不存在该元素,则将它插入到la中去,最后线性表la就存放了集合AUB的元素。
2.(A-B)U(B-A)是由属于集合A或集合B,但又不同时属于A和B的全部元素组成。我们可以先分别建立由集合A和集合B的元素构成的链表la和lb,然后对lb中每一个元素进行如下处理:在链表la中查找是否有相同元素,若有相同元素,则从la中删除该元素;若没有相同元素,则将此元素插入la中。最后,链表la就存放了(A-B)U(B-A)的全部元素。
四、实验步骤
参考实验程序上机调试。
对调试好的程序分别输入2组不同的数据,观察运行情况。
五、实验过程
实验内容(1): 利用顺序线性表实现集合运算AUB。
程序调试:
/* 求集合运算AUB */
#define MAX 100
typedef struct{
char element[MAX];
int num;
} LIST;
void create(LIST *list)
{
int i,n;
printf("Enter the number of list:");
scanf("%d",&n);
for(i=0;i printf("Enter element[%d]:",i+1); scanf("%d",&(list->element[i])); } list->num=n; } int insert(LIST *list, int m, int x) 数据结构实验报告 031510131 郭文豪 { int i,n; n=list->num; if(n >= MAX){ printf("The list is overflow! \n"); return(-1); }else if(m < 1 || m > n+1){ printf("Error! \n"); return(-2); }else{ for(i=n-1; i>=m-1; i--) list->element[i+1]=list->element[i]; list->element[m-1]=x; list->num=n+1; return(0);}} int locate(LIST *list, int x) { int i; for(i=0; i<=list->num-1; i++) if(list->element[i] == x) return(i+1); return(0);} void print_list(LIST *list) { int i,n; n=list->num; if(n == 0) printf("The list is empty.\n"); else{ for(i=0; i<=n-1; i++) printf("%d\t",list->element[i]); printf("\n");}} main() { LIST a,b,*la=&a,*lb=&b;/*修改*/ int i,x; create(la); printf("SET A:\n"); print_list(la); create(lb); printf("SET B:\n"); print_list(lb); for(i=0;i x=lb->element[i]; 数据结构实验报告 031510131 郭文豪 if(locate(la,x) == 0) insert(la,la->num+1,x); } printf("SET (AUB):\n"); print_list(la); } 运行结果截图为: 实验1-1 实验内容(2): 利用向前链表实现集合运算(A-B)U(B-A)。 程序调试: /* 集合运算(A-B)U(B-A)*/ #include typedef struct node{ char info; struct node *link; } NODE; NODE *initial(),*process(); main() {NODE *la,*lb,*ptr,*p1,*p2;