- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第2章线性表2.1.2抽象数据类型定义例2-1有两个集合A与B,求新集合A=A∪B。实现函数
voidunion(list,list);voidunion(structint_list*lista,structint_list*listb){intlengtha,lengthb,i;intvalue;lengtha=int_list_count(lista);lengthb=int_list_count(listb);for(i=0;ilengthb;i++){value=int_list_get(listb,i);if(!int_list_lookup(lista,value))int_list_add(lista,lengtha++,value);}}例2-2已知线性表LA和LB中的元素按值非递减排列,现将LA和LB归并为一个新的线性表LC。实现函数voidmerge(list,list,list);voidmerge(structint_list*lista,structint_list*listb,structint_list*listc){intlengtha,a,i,lengthb,b,j,lengthc=0;lengtha=int_list_count(lista);lengthb=int_list_count(listb);int_list_clear(listc);while(ilengthajlengthb){a=int_list_get(lista,i);b=int_list_get(listb,j);if(a=b){int_list_add(listc,lengthc++,a);i++};else{int_list_add(listc,lengthc++,b),j++};}while(ilengtha){a=int_list_get(lista,i++);int_list_add(listc,lengthc++,a);}while(jlengthb){b=int_list_get(listb,j++);int_list_add(listc,lengthc++,b);}}structsq_int_list*sq_int_list_init(){structsq_int_list*list;list=(structsq_int_list*)malloc(sizeof(structsq_int_list));if(list==NULL)returnNULL;list-elements=(int*)malloc(sizeof(int)*LIST_INT_SIZE));if(list-elements==NULL){free(list);returnNULL;}list-count=0;list-size=LIST_INT_SIZE;returnlist;}上机作业用C程序实现顺序存储的线性表(list)及其所有相关的操作。*线性表是最常见的一种数据结构。线性表:由N(N≥0)个数据元素构成的有限序列。其中数据元素的个数N称为线性表的长度:当N=0时,称为空表;当N≥1时,称为非空表,可记为:(a0,a1,...,ai,...,aN-1),0≤i<Na0称为线性表的首结点,aN-1称为线性表的尾结点。2.1线性表的定义线性表是一种相当灵活的数据结构、更是一种典型的线性结构。其基本特点是线性表中的数据元素是有序且是有限的,长度可根据需要增长或缩短。在非空表中:①有且仅有一个首节点;②有且仅有一个尾节点;③除首节点外,每个元素有且仅有一个直接前驱;④除尾节点外,每个元素有且仅有一个直接后继。2.1.1线性表的特点ADTlist{//采用动态存储数据对象:{ai|ai∈element_set,0≤i<
文档评论(0)