合并两个顺序存储结构的线性表...

来源:互联网 发布:linux telnet root 编辑:程序博客网 时间:2024/05/29 16:31

     大二,开始上数据结构(吴蔚敏那版的)了,上课老师照着书上,感觉没什么用,光讲算法,也没说具体算法是怎么实现的,就不听.十一分出两天来看看书,才发现真的还是挺难的.老师说的都是精髓,至于算法就应该自己去安照精髓去摸索,语言学习不就是这样么,最后学的都是方法吧.恩,好好听课,天天向上.大笑

     算法:想让lb中的元素,插入到la中,首先我们得想步骤是怎么样的?

              1.给la,lb插入原始的元素

              2.查找lb中的元素

              3.和la中的比较,看是否重复,不重复,就插入,重复就不插入(好邪恶!)

              4.输出la即可.

可以把大体思路,走一下,哪一步用到哪些函数,然后分别把各个函数实现,最后在主函数中调用,一气呵成.把一个大的程序分成几个小的部分,分别写完测试成功,再拼接在一起.额,很难把我想的表达出来.看代码吧....

     代码:

#include<iostream>#include <malloc.h>#define LIST_INIT_SIZE 100#define LISTINCREAMENT 10#define OVERFLOW -2#define OK 1using namespace std;typedef struct{int *elem;int length;int listsize;}sqlist;//初始化链表int InitList_Sq(sqlist &L){L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;return OK;}//给链表增加元素int listInsert(sqlist &L,int i,int e){int *newbase,*q,*p;if (i<1||i>L.length+1) return OVERFLOW;if(L.length>=L.listsize){newbase=(int*)realloc(L.elem,(L.listsize+LISTINCREAMENT)*sizeof(int));if(!newbase) exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREAMENT;}q=L.elem+i-1;for(p=L.elem+L.length-1;p>=q;--p)*(p+1)=*p;*q=e;++L.length;return OK;}//确定链表元素在链表中的位置.int locateList(sqlist L,int e ){int *p,i=1;p=L.elem;while(i<=L.length&&e!=*p){++i;++p;}if(i<=L.length)return i;elsereturn 0;}//合并两个链表int unionmerge(sqlist&la,sqlist &lb){int i,e;for(i=1;i<=lb.length;i++){e=*(lb.elem+i-1);if(!locateList(la,e))listInsert(la,la.length+1,e);}return OK;}void main(){       //1.给la,lb插入元素int n,e; sqlist la;InitList_Sq(la);cout<<"请输入第一个集合la中的元素个数:";cin>>n;cout<<"请输入第一个集合la中的各个元素:";for(int i=1;i<=n;++i){cin>>e;listInsert(la,i,e);}int m;sqlist lb;InitList_Sq(lb);cout<<"请输入第二个集合lb中的元素个数:";cin>>m;cout<<"请输入第二个集合lb中的各个元素:";for(int i=1;i<=m;++i){cin>>e;listInsert(lb,i,e);}        //2和3,合并la,lb,也就是将lb的元素插入到la.unionmerge(la,lb);        //输出合并的函数cout<<"合并后的线性表是:"<<endl;for(int i=1;i<=la.length;i++){cout<<*(la.elem+i-1)<<"";}   cout<<endl;}
有什么不明白的可以给我留言哦...(毫无存在感啊!!!o(╯□╰)o)

	
				
		
原创粉丝点击