数据结构实验报告

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

相关文档
最新文档