• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天之道

            享受編程的樂趣。
            posts - 118, comments - 7, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            求兩個(gè)線性表的集合

            Posted on 2012-08-21 22:38 hoshelly 閱讀(193) 評(píng)論(0)  編輯 收藏 引用 所屬分類: DS && Algorithm
            #include<stdio.h>
            #include<stdlib.h>
            #define LIST_INIT_SIZE 100
            #define LISTINCREMENT 10
            #define OK 1
            #define ERROR 0
            #define OVERFLOW -1
            typedef int ElemType;
            typedef int Status;
            typedef struct {
                ElemType *elem; //存儲(chǔ)空間基址
                int length; //當(dāng)前的線性表長度
                int listsize; //當(dāng)前分配的存儲(chǔ)容量
            }SqList;

            //初始化線性表
            Status InitList_Sq(SqList *L) //用線性表的指針操作
            {
                (*L).elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
                if(!(*L).elem) exit(OVERFLOW);
                (*L).length=0;
                (*L).listsize=LIST_INIT_SIZE;
                return OK;
            }
            int ListLength(SqList L)
            {
                return L.length;
            }

            Status GetElem(SqList L,int i,ElemType *e)
            {
                if(i<1 || i>L.length)
                    exit(ERROR);
                *e=*(L.elem+i-1);
                return OK;
            }

            Status ListInsert(SqList *L,int i,ElemType e)
            {
                ElemType *newbase,*p,*q;
                if(i<1 || i>(*L).length+1)
                    return ERROR;
                if((*L).length >= (*L).listsize)
                {
                    newbase=(ElemType *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));
                    if(!newbase) exit(OVERFLOW);
                    (*L).elem=newbase;
                    (*L).listsize +=LISTINCREMENT;
                }
                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 LocateElem(SqList L,ElemType e)
            {
                int i;
                for(i=0;i<L.length;i++)
                {
                    if(*(L.elem+i) == e)
                        break;
                }
                if(i>=L.length)
                    return 0;
                return i+1;
            }

            Status Visit(ElemType *c)
            {
                printf("%d ",*c);
                return OK;
            }

            Status ListTraverse(SqList L)
            {
                int i;
                for(i=0;i<L.length;i++)
                    Visit(L.elem+i);
                printf("\n");
                return OK;
            }

            void Union(SqList *La,SqList Lb) //求La和Lb中元素的集合La,即把Lb中與La不相同的元素取出來插入La中
            {
                ElemType La_len,Lb_len;
                int i,e;
                La_len=ListLength(*La);
                Lb_len=ListLength(Lb);
                for(i=1;i<=Lb_len;i++)
                {
                    GetElem(Lb,i,&e);
                    if(!LocateElem(*La,e))
                        ListInsert(La,++La_len,e);
                }
            }//Union
            int main()
            {
                SqList La,Lb;
                int j,a[4]={3,5,8,11},b[7]={2,6,8,9,11,15,20};
                InitList_Sq(&La);
                for(j=1;j<=4;j++)
                    ListInsert(&La,j,a[j-1]);
                printf("print La: \n");
                ListTraverse(La);
                
                InitList_Sq(&Lb);
                for(j=1;j<=7;j++)
                    ListInsert(&Lb,j,b[j-1]);
                printf("print Lb: \n");
                ListTraverse(Lb);

                Union(&La,Lb);

                printf("print La: \n");
                ListTraverse(La);

                return 0;
            }
            大美女久久久久久j久久| 久久综合丁香激情久久| 久久AAAA片一区二区| 国内精品久久久久久久97牛牛| 波多野结衣久久一区二区| 蜜臀久久99精品久久久久久| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 国内精品久久久久影院优| 亚洲综合精品香蕉久久网| 亚洲精品国产字幕久久不卡| 久久综合给合久久狠狠狠97色69| 欧洲人妻丰满av无码久久不卡| 国产精品久久久久久吹潮| 日本三级久久网| 久久这里有精品视频| 亚洲综合熟女久久久30p| jizzjizz国产精品久久| 99久久精品免费看国产| 久久久久亚洲爆乳少妇无| 亚洲成av人片不卡无码久久| 亚洲国产精品18久久久久久| 久久国产精品-久久精品| 少妇被又大又粗又爽毛片久久黑人 | 久久久久久噜噜精品免费直播 | 精品久久久久久无码免费| 色偷偷88欧美精品久久久| 青青草原精品99久久精品66| 国产毛片久久久久久国产毛片| 亚洲欧洲久久久精品| 久久99精品久久久久久久久久| 久久精品国产黑森林| www性久久久com| 久久久久高潮综合影院| 777久久精品一区二区三区无码| 亚洲精品成人网久久久久久| 亚洲精品乱码久久久久久按摩| 久久国产乱子伦精品免费午夜| 7777久久久国产精品消防器材| 国产高清国内精品福利99久久| 色欲综合久久中文字幕网| 亚洲精品久久久www|