资源描述:
《严蔚敏版数据结构所有算法代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、严蔚敏版数据结构所有算法代码------------------------线性数据结构-----------------------------2013年7月//线性表、链表//栈、队列//数组、广义表//串-------------------------线性表----------------------typedefstruct{charname[20];//注意如果应用指针的形式//在初始化每个结点时一定要先为结点中的每个变量开辟内存空间charsex;charaddr[100];unsignedintage;charphonenum[20]
2、;}node;//结点描述typedefstruct{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)//销毁线
3、性表操作{if(l.p!=NULL){free(l.p);printf("销毁成功!");}elseprintf("线性表不存在!");}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
4、)returntrue;elsereturnfalse;}intgetelem(list&l,inti,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)//
7、得到表中第i个元素的后继元素{if(i>=l.length
8、
9、l.p==NULL)returnfalse;elsenext_e=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
12、)exit(1);l.listsize+=LISTINCREMENT;}k=&l.p[i-1];for(q=&l.p[l.length-1];q>k;q--)*(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、--;returntrue;}voidmergerlist(listla,listlb,list&lc)//归并两个按非递减排列的线性表{intla_len,lb_len,i=1,j=1,k=0;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++;}
16、}while(i<=la_len){getelem(la,i,ai);insertlist(lc,++k,a