• <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>

            我心飛翔

            有事不慌,無事不荒,有容乃大,無欲則剛,以德立綱,外圓內方。

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              1 隨筆 :: 9 文章 :: 13 評論 :: 0 Trackbacks

            struct Lnode  // 定義鏈表類型
            {
              ElemType data;
              struct Lnode *next;
             };
              typedef struct Lnode *LinkList;

              int InitList(LinkList &L)  //初始化一個鏈表
              {
                L=(LinkList)malloc(sizeof(Lnode));
                if(!L)
                 exit(OVERFLOW);
                 L->next=NULL;
                 return OK;
              }

              int DestroyList(LinkList &L)  //銷毀鏈表
              {
                LinkList q;
                while(L)
                {
                  q=L->next;
                  free(L);
                  L=q;
                }
                return OK;
              }

              int ClearList(LinkList L)  //清零操作
              {
                LinkList p,q;
                q=L->next;
                while(q)
                {
                  p=q->next;
                  free(q);
                  q=p;
                }
                L->next=NULL;
                return OK;
              }

              int ListEmpty(LinkList L)  //判空操作
              {
                if(L->next==NULL)
                return TRUE;
                else
                return FALSE;
              }

              int ListLength(LinkList L)  //計算鏈表的長度
              {
                LinkList p;
                int i=0;
                p=L->next;
                while(p)
                {
                  ++i;
                  p=p->next;
                }
                return i;
              }

              int GetElem(LinkList L,int i,ElemType e)  //得到第i個元素的數據域
              {
                LinkList p;
                int j=0;
                p=L->next;
                while(p && j<i-1)
                {
                  p=p->next;
                  ++j;
                }
                if(j>i || !p)
                return ERROR;
                else
                e=p->data;
                return OK;
              }

              int LocateElem(LinkList L,ElemType e,int (*compare)(ElemType,ElemType))
              {                       //找到第一個對于E滿足函數的數據元素的位置
                LinkList p;
                int i=0;
                p=L->next;
                while(p)
                {
                  ++i;
                  if(compare(p->data,e))
                  return i;
                  p=p->next;
                }
                return 0;
              }

              int InsertList(LinkList L,int i,ElemType e)  //在第i個數據元素上插入一個元素
              {
                LinkList p,s;
                int j=0;
                p=L;
                while(p && j<i-1)
                {
                  p=p->next;
                  ++j;
                }
                if(!p || j>i)
                return ERROR;
                s=(LinkList)malloc(sizeof(Lnode));
                s->data=e;
                s->next=p->next;
                p->next=s;
                return OK;
              }

              int DeleteList(LinkList &L,int i,ElemType e) //刪除第i個元素
              {
                LinkList p,q;
                int j;
                j=0;
                p=L;
                while(p->next && j<i-1)
                {
                 p=p->next;
                 ++j;
                }
                if(!p->next || j>i)
                return ERROR;
                q=p->next;
                p->next=q->next;
                e=q->data;
                free(q);
                return OK;
              }

              int ListTraverse(LinkList L,int (*vi)(ElemType))
              //對所有鏈表中的元素進行函數vi操作
              {
                LinkList p;
                p=L->next;
                while(p)
                {
                  vi(p->data);
                  p=p->next;
                }
                return OK;
              }

              void MergeList(LinkList La,LinkList Lb,LinkList &Lc)
              {                              //合并二個非遞減的La和Lb得到一個非遞減的Lc
                LinkList pa,pb,pc;
                pa=La->next;
                pb=Lb->next;
                Lc=pc=La;
                while(pa && pb)
                {
                  if(pa->data <= pb->data)
                  {
                    pc->next=pa;
             pc=pa;
             pa=pa->next;
                  }
                  else{
                    pc->next=pb;
             pc=pb;
             pb=pb->next;
                  }
                }
                pc->next=pa?pa:pb;
                free(Lb);
             Lb=NULL;
              }

            posted on 2005-10-11 22:48 無情雨 閱讀(1447) 評論(2)  編輯 收藏 引用 所屬分類: 數據結構

            評論

            # re: 線性鏈表的操作(C語言) 2007-04-20 13:54 123456
            請問一下,這個 int ListTraverse(LinkList L,int (*vi)(ElemType))
            在主函數如何應用,就是具體應該怎樣實現??
            謝謝
              回復  更多評論
              

            # re: 線性鏈表的操作(C語言) 2007-04-20 16:12 wzqxp2002
            最好進一步用模版實現  回復  更多評論
              

            久久777国产线看观看精品| 精品久久久久久久久免费影院| 久久综合鬼色88久久精品综合自在自线噜噜 | 欧美久久综合九色综合| 亚洲女久久久噜噜噜熟女| 国产精品丝袜久久久久久不卡| 伊人久久综合成人网| 久久久WWW成人免费毛片| 日本久久久精品中文字幕| 蜜臀av性久久久久蜜臀aⅴ| 久久久久国色AV免费观看| 久久精品国产免费观看三人同眠| 少妇被又大又粗又爽毛片久久黑人| 亚洲精品国精品久久99热一| 亚洲午夜久久影院| 久久国产免费观看精品| 伊人久久精品影院| 久久久久人妻一区二区三区 | 久久久久免费看成人影片| 久久亚洲熟女cc98cm| 国产精品一区二区久久精品无码 | 亚洲av成人无码久久精品| 99久久国产亚洲高清观看2024| 人妻无码αv中文字幕久久琪琪布| 精品久久久久久国产牛牛app | 日韩久久久久久中文人妻| 久久久精品久久久久久| 久久青青草原国产精品免费| 中文国产成人精品久久不卡| 一本久久精品一区二区| 久久精品国产只有精品66| 久久91精品国产91久久户| 久久99精品久久久久久久不卡| 国产欧美久久一区二区| 国产午夜精品久久久久免费视| 亚洲级αV无码毛片久久精品| 伊人色综合九久久天天蜜桃| 亚洲欧美精品一区久久中文字幕 | 国产精品久久久久久久午夜片| 久久精品国产亚洲网站| 97久久精品人人做人人爽|