//在當前結點前插入乙個元素,沒有給頭指標;
//定義的結點的結構體和頭指標的結構體;
typedef int datatype;
typedef struct linknode
linknode,*plinknode;//結點結構體
typedef struct linklist
linklist ,*plinklist;//鍊錶
//函式原型void insertfrontnod(plinknode pos,datatype x);
// 思路分析:
/* 前面一篇文章講的是刪除乙個非尾結點,緊接著這篇就是在當前前插入乙個元素,也是沒有告訴頭指標;其實這兩個問題的解法是類似的,刪除非尾結點(注意: 是非尾結點),是把當前結點的後乙個結點的data直接覆蓋當前結點的data,然後釋放後乙個結點,而在當前結點前插入乙個元素,也是只給了指向當前結點的指標,我們類似非尾指標做一下,首先,肯定要malloc一塊新結點,如果你一直想的是怎麼將newnode插到當前結點前的話,那就有點誤區了,依然打它後乙個位置的注意,我們將newnode插入到當前結點的後面,先將當前結點的data賦給newnode 的data,然後將當前結點的data賦為x, 不要著急建立newnode的時候就將x賦給了newnode,這樣的話就省去再開闢乙個臨時變數;
**實現如下:*/
void insertfrontnod(plinknode pos,datatype x)
if(pos == null)//如果麼有當前結點,則返回;
tmp = pos->next ;
pos->next = newnode ;
newnode ->next = tmp;
//以上三行為將newnode插入到當前結點後;
newnode ->data = pos->data ;
pos->data = x;
//以上兩行為newnode的data和當前結點data的乙個互換;
}
刪除當前單鏈表節點(不能找到前乙個節點)
力扣上看到的乙個題,大概是寫乙個函式,這個函式的傳參值,是乙個單鏈表的某乙個節點,需要在鍊錶中刪除這個節點。不影響其他節點。首先按照常理,應該是找到前乙個節點,並將前乙個節點指向下乙個指標的節點進行更改。但是有問題,首先,這是乙個單鏈表,傳參值是要刪除的節點,也就是說找不到它的前乙個節點。思路 首先...
在無頭單鏈表的乙個節點前插入乙個節點(不能遍歷)
例如 無頭鍊錶 a b c d 在節點c前面插入乙個節點 思路 乾坤大挪移 在c的後插入乙個節點,可以將c後面新插入的節點q的值與c的值交換 即可實現c節點之前插入節點的功能 void listentry listnode phead,linknode pos datatype value 若pos...
在無頭單鏈表的乙個非頭節點前插入乙個節點
思路 由於單鏈表的單向性,所以我們現在這個非頭結點的後面插入乙個節點,然後在交換這兩個節點就可以了。標頭檔案 鍊錶定義 include include include typedef int datatype typedef struct strnode node typedef struct st...