在有序鍊錶中插入結點,仍保持其有序性

2021-08-28 14:29:56 字數 705 閱讀 3153

如果在乙個有序陣列中,你想插入乙個資料,還需要把其後所有元素往後移一位。

那麼有沒有乙個比較好的資料結構可以實現簡單便捷的插入操作呢?

那就是鍊錶,鍊錶由兩個部分組成,前面的部分為資料部分,用來儲存資料,後面的部分為指標部分,用來指向下乙個結點,鍊錶的資料結構就很好地解決了插入麻煩的問題。(本文只介紹尾插法)只需要讓前乙個結點的指標指向要插入的資料,讓插入的資料的指標,指向上乙個結點原本指向的結點即可!

下面是**的實現:

#define _crt_secure_no_warnings 1

#include #include /*

* 本程式是對於有序鍊錶插入操作的練習

* 郭文峰

* 2018/9/30

*/struct node

;int main(void)

else

q = p;//讓q指向此結點

} //輸入帶插入的值

scanf("%d", &a);

//從頭指標開始遍歷

t = head;

while (t != null)

t = t->next;

} //輸出所有結點

t = head;

while (t != null)

system("pause");

return 0;

}

有序的迴圈鍊錶中插入結點

給定乙個有序的迴圈鍊錶,在其中插入乙個值,保持該迴圈鍊錶依然有序。首先看下迴圈鍊錶的結構,如下圖所示為乙個迴圈鍊錶,其尾結點指向頭結點,從而形成乙個迴圈。給定的鍊錶結點可以是鍊錶任意乙個結點,這個結點不一定是煉表頭結點,從而這也增加了該題的難度。此時若是要在鍊錶中插入4,則插入後的鍊錶如下所示 可以...

PTA 7 4 在有序鍊錶中插入資料 20分

給定一批嚴格遞增排列的整型資料,給定乙個x,若x不存在,則插入x,要求插入後保持有序。存在則無需任何操作。輸入格式 輸入有兩行 第乙個數是n值,表示鍊錶中有n個資料。後面有n個數,分別代表n個資料。第二行是要插入的數。輸出格式 輸出插入後的鍊錶資料,以空格分開。行末不能有多餘的空格。輸入樣例1 在這...

刪除有序鍊錶中重複的結點

比如 將鍊錶1,2,2,3,4,4,5,6,7,7,7中重複的結點刪除,則結果變為 1,3,5,6 方法為 從鍊錶的頭結點開始,用兩個引用p1,p2來代表相比較的前後兩個結點 如果p1的值不等於p2的值,則p1與p2都往後移動一位 如果p1的值等於p2的值,則讓p1的位置不變,讓p2往後移動,直到p...