往有序链表的插入元素使原链表依旧有序
生活随笔
收集整理的這篇文章主要介紹了
往有序链表的插入元素使原链表依旧有序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*在有序鏈表中插入元素時,最好設置兩個指針,一前一后,
cur指針負責比較大小,pre指針負責定位插入位置的前驅。【關鍵點】
(1)3中情況:空鏈表、第一個值比插入元素大、非空鏈表&&第一個元素比插入元素小
(2)pre、cur指針的初始值
(3)返回值類型:鏈表指針TNode**/
#include<iostream>
using namespace std;typedef struct TNode
{int data;struct TNode *next;
}TNode;TNode* insertNum(TNode* head, int data)
{TNode *node = new TNode;node->data = data;node->next = NULL;//case1:如果是空鏈表if (head == NULL) {return node;}//case2:如果第一個元素就比待插入元素大,直接插入node,并//把node設為新的頭結點if (head->data > data){node->next = head;return node;}//case3:如果不是空鏈表&&第一個元素不比待插入元素大TNode* pre = head; //插入位置的前驅TNode* cur = head->next; //用來比較大小while (cur && cur->data < data) //查找插入位置{pre = cur; cur = cur->next;} //循環結束后,找打插入位置的前驅pre//插入元素node->next = cur;pre->next = node;return head;
}int main()
{int num;TNode* head = NULL;int A[4] = { 0, 11, 3, 4 };for (int i = 0; i < 4; i++){head = insertNum(head, A[i]);}for (TNode* cur = head; cur!=NULL; cur = cur->next)cout << cur->data<<endl;return 0;
}
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的往有序链表的插入元素使原链表依旧有序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 插入排序,希尔排序
- 下一篇: 往有序单循环链表的插入元素使原链表依旧有