2-4 遞增鏈表的插入

來源:互聯網
上載者:User

標籤:clu   return   element   getc   實現   problems   getch   tmp   lag   

題目連結:https://pintia.cn/problem-sets/434/problems/5726

1.如果題目沒有給我們建好原遞增序列的鏈表,那麼我們可以考慮在建立原鏈表時插入需要插入的結點,就是在建立原鏈表時,每讀入一個資料,將該資料與待插入的資料相比較,如果發現待插入資料小於等於剛讀入的資料,那麼就先把需要插入的資料產生的結點連結到表尾,再把剛讀入的資料結點連結到表尾,然後繼續鏈表的建立,但是為了防止需要插入資料的反覆插入,我們需要設定一個標誌flag = 0; 插入完成後就將這個flag置為1,這樣就不會反覆插入了。

下面是這個想法的實現代碼:

 1 #include <stdio.h> 2 #include <stdlib.h> 3  4 typedef int ElementType; 5 typedef struct Node* List; 6 struct Node{ 7     ElementType Data; 8     List Next; 9 };10 11 int main()12 {13     int N, M, dt, flag;14     flag = 0;15     List front, rear, tmp;16     front = rear = (List)malloc(sizeof(struct Node));17 18     scanf_s("%d %d", &N, &M);19     getchar();20 21     if (N == 0)                //如果原鏈表為空白,直接插入22     {23         tmp = (List)malloc(sizeof(struct Node));24         tmp->Data = M;25         tmp->Next = NULL;26         rear->Next = tmp;27         rear = tmp;28     }29 30     while (N--)            //如果原鏈表不為空白,在建表時插入31     {32         scanf_s("%d", &dt);33         getchar();34         if (M <= dt && flag == 0)35         {36             flag = 1;37             tmp = (List)malloc(sizeof(struct Node));38             tmp->Data = M;39             tmp->Next = NULL;40             rear->Next = tmp;41             rear = tmp;42         }43         tmp = (List)malloc(sizeof(struct Node));44         tmp ->Data = dt;45         tmp -> Next = NULL;46         rear -> Next = tmp;47         rear = tmp;48     }49     tmp = front -> Next;50     for (;tmp->Next; tmp = tmp->Next)51         printf("%d ", tmp->Data);52     printf("%d\n", tmp->Data);53     54 55     return 0;56 }

2.下面是這題的常規解法:

 1 List Insert(List L, ElementType X) 2 { 3     List PreNode, InsNode; 4     PreNode = L; 5     for (; PreNode->Next && PreNode->Next->Data < X; PreNode = PreNode->Next); 6     InsNode = (List)malloc(sizeof(struct Node)); 7     InsNode->Data = X; 8     InsNode->Next = PreNode->Next; 9     PreNode->Next = InsNode;10     return L;11 }

 

2-4 遞增鏈表的插入

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.