数据结构实验一 线性表的基本操作

更新时间:2023-10-23 07:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 线性表的基本操作

一、实验目的

1、理解线形表的定义、特征和相关概念; 2、理解线形表的顺序存储结构; 3、掌握上机调试线性表的基本方法。 二、实验条件

1、PC机

2、软件Visual C++ 三、实验原理

线性表的顺序存储结构是用一组地址连续的存储单元依次存放线性表中的元素。其实现手段是数组类型。由于内存中的元素存放顺序与逻辑上的顺序相同,所以元素的地址就体现了逻辑关系,即物理相邻=逻辑相邻;在插入或者删除某一个元素时,其后的所有元素也要做相应的后移或者前移,即有可能要移动大量元素。 四、实验内容

1、利用两个线形表LA和LB分别表示两个集合A和B,现要求一个新的集合A=A∪B,用顺序表实现;

2、对给定的两个集合能够进行合并,并给出合并结果; 五、算法分析

void union(List &La, List Lb){ La_len = ListLength(La); Lb_len = ListLength(Lb); for (i=1; i<=Lb_len; i++){ GetElem(Lb,i, e);

If(!LocateElem(La,e,equal)) ListInsert(La, ++La_len, e); } }//union

六、完整程序实现

#include #include

#define list_init_size 100 #define listincrement 10

typedef struct { int *elem; int length; int listsize; } sqlist;

int initsqlist (sqlist *l)//初始化 {

l->elem=(int *)malloc(list_init_size*sizeof(int)); if(!l->elem) exit(0); l->length=0; l->listsize=list_init_size; return 0; }

int listinsert_sq(sqlist *l,int i,int e)//插入一个元素 { int *p,*q; if(i<1||i>l->length+1) exit(0); q=&(l->elem[i-1]); for(p=&(l->elem[l->length-1]);p>=q;--p) *(p+1)=*p; *q=e; ++l->length; return 0; }

void add(sqlist *l,int e)//添加到最后 {

listinsert_sq(l,l->length+1,e); }

void disp(sqlist *l) {

int i;

for(i=0;ilength;i++) printf(\ printf(\

}

int find(sqlist *l,int e)//查找元素是否存在 {

int i,t=-1;

for(i=0;ilength;i++) if(l->elem[i]==e) {t=i;break;} return t; }

void opt_1(sqlist *la,sqlist *lb)//(相同元素不保留) {

int i,j;

for(i=0;ilength;i++) { j = find(la,lb->elem[i]); if(j==-1) listinsert_sq(la,la->length+1,lb->elem[i]); } }

int main() { sqlist La,Lb; initsqlist(&La); add(&La, 1); add(&La, 2); add(&La, 5); add(&La, 7); initsqlist(&Lb); add(&Lb, 2); add(&Lb, 4); add(&Lb, 7); add(&Lb, 9); disp(&La); disp(&Lb);

opt_1(&La,&Lb);//操作(相同元素不保留) disp(&La); }

结果截图:

本文来源:https://www.bwwdw.com/article/su3f.html

Top