资源描述:
《严蔚敏版数据结构所有算法代码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.严蔚敏版数据结构所有算法代码------------------------线性数据结构-----------------------------2013年9月//线性表、链表//栈、队列//数组、广义表//串-------------------------线性表----------------------typedefstruct{charname[20];//注意如果应用指针的形式//在初始化每个结点时一定要先为结点中的每个变量开辟内存空间charsex;charaddr[100];unsignedintage;charphonenum[20];}node;//结点描述typ
2、edefstruct{node*p;intlength;//当前顺序表长度intlistsize;//当前分配的线性表长度}list;//线性表描述listL;//定义一个线性表intinitlist(list&l)//构造一个空的线性表{l.p=(node*)malloc(LIST_INIT_SIZE*sizeof(node));if(!(l.p))exit(1);l.length=0;l.listsize=LIST_INIT_SIZE;returntrue;}voiddestroylist(list&l)//销毁线性表操作{if(l.p!=NULL){free(l.p);prin
3、tf("销毁成功!");}else..printf("线性表不存在!");}intclearlist(list&l)//将线性表置空操作{if(l.p==NULL){printf("线性表不存在!");returnfalse;}else{free(l.p);l.p=(node*)malloc(l.listsize*sizeof(node));l.length=0;}returntrue;}intlistempty(list&l)//判断线性表是否为空表{if(l.p==NULL)returntrue;elsereturnfalse;}intgetelem(list&l,i
4、nti,node&e)//用e返回表中第i个数据元素{if(l.p==NULL)returnfalse;elsee=l.p[i-1];returntrue;}intpriorelem(list&l,inti,node&pre_e)//得到第i个元素的前驱元素{if(i==0
5、
6、l.p==NULL)returnfalse;elsepre_e=l.p[i-1];returntrue;}intnextelem(list&l,inti,node&next_e)//得到表中第i个元素的后继元素{if(i>=l.length
7、
8、l.p==NULL)returnfalse;..elsenext_e
9、=l.p[i+1];returntrue;}intinsertlist(list&l,inti,node&e)//将元素e插入到表l中第i个元素的后面{node*q,*k;if(i<1
10、
11、i>l.length+1)returnfalse;if(l.length>=l.listsize){l.p=(node*)realloc(l.p,(l.listsize+LISTINCREMENT)*sizeof(node));if(!l.p)exit(1);l.listsize+=LISTINCREMENT;}k=&l.p[i-1];for(q=&l.p[l.length-1];q>k;q--)*
12、(q+1)=*q;*k=e;l.length++;returntrue;}intdeletelist(list&l,inti,node&e)//删除表中第i个元素并用e返回其值{node*q;intj=i-1;if(i<1
13、
14、i>l.length)returnfalse;e=l.p[i-1];for(q=&l.p[i-1];j15、;nodeai,bj;la_len=la.length;..lb_len=lb.length;while(i<=la_len&&j<=lb_len){getelem(la,i,ai);getelem(lb,j,bj);if(ai.a<=bj.a){insertlist(lc,++k,ai);i++;}else{insertlist(lc,++k,bj);j++;}}while(i<=la_len){getelem(la,i,ai);insertlist(l