如果在乙個有序陣列中,你想插入乙個資料,還需要把其後所有元素往後移一位。
那麼有沒有乙個比較好的資料結構可以實現簡單便捷的插入操作呢?
那就是鍊錶,鍊錶由兩個部分組成,前面的部分為資料部分,用來儲存資料,後面的部分為指標部分,用來指向下乙個結點,鍊錶的資料結構就很好地解決了插入麻煩的問題。(本文只介紹尾插法)只需要讓前乙個結點的指標指向要插入的資料,讓插入的資料的指標,指向上乙個結點原本指向的結點即可!
下面是**的實現:
#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...