資料結構學習(四)——迴圈單鏈表的操作之合并

來源:互聯網
上載者:User

所謂迴圈鏈表就是尾結點與頭結點相連的鏈表,整個鏈表形成一個環。而對於迴圈鏈表的插入與刪除運算,基本上與單鏈表相同,只是在判斷鏈表是否結束有所不同。下面的代碼操作實現了兩個迴圈單鏈表的合并。且核心代碼不多,主要是分別找到迴圈單鏈表的尾結點再進行後續操作。

#include <stdio.h>#include <stdlib.h>typedef struct list{char data;struct list *next;}linklist;linklist *CreateLinklist_End(int *l);//尾插法建立單迴圈鏈表linklist *Linklist_Connect(linklist *h1,int l1, linklist *h2, int l2);//單迴圈鏈表的合并void ShowLinklist(linklist *h);//輸出顯示鏈表int main(void){linklist *head1, *head2;int length1, length2;//分別記錄兩個迴圈鏈表的長度printf("迴圈單鏈表的操作練習:\n");printf("建立兩個單迴圈鏈表:\n");printf("第一個鏈表資料輸入(請依次輸入字元資料,'#'號結束):\n");head1 = CreateLinklist_End(&length1);getchar();//消除斷行符號鍵為後面輸入帶來的影響printf("第二個鏈表資料輸入(請依次輸入字元資料,‘#’號結束):\n");head2 = CreateLinklist_End(&length2);printf("第一個鏈表的資料依次為:\n");ShowLinklist(head1);printf("其節點數目為:%d\n", length1);printf("第二個鏈表的資料依次為:\n");ShowLinklist(head2);printf("其節點數目為:%d\n", length2);printf("第一個鏈表和第二個鏈表的合并輸出為:\n");head1 = Linklist_Connect(head1, length1, head2, length2);ShowLinklist(head1);return 1;}//尾插法建立迴圈單鏈表,參數l表示建立鏈表的長度linklist *CreateLinklist_End(int *l){linklist *head, *p, *e;char ch;*l = 0;head = (linklist*)malloc(sizeof(linklist));e = head;ch = getchar();while(ch != '#'){*l = *l + 1;p = (linklist*)malloc(sizeof(linklist));p->data = ch;e->next = p;e = p;ch = getchar();}e->next = head;//迴圈鏈表的尾結點指標域指向前端節點return head;}//單迴圈鏈表的合并linklist *Linklist_Connect(linklist *h1, int l1, linklist *h2, int l2){linklist *p1, *p2;int l=1;p1 = h1->next;while(l<l1)//找到鏈表1的尾結點{l++;p1 = p1->next;}p2 = h2->next;l = 1;while(l<l2)//找到鏈表2的尾結點{l++;p2 = p2->next;}p1->next = p2->next->next;//核心操作:鏈表1的尾結點指向鏈表2輔助前端節點的下個節點p2->next = h1;//鏈表的尾結點指向鏈表1的輔助前端節點free(p2->next);//釋放鏈表的輔助前端節點return h1;}//輸出顯示鏈表void ShowLinklist(linklist *h){linklist *p;p = h->next;while(p != h)//迴圈單鏈表的結束判斷標誌為不等於前端節點{printf("%c ", p->data);p = p->next;}printf("\n");}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.