單鏈表操作之在當前節點前插入乙個元素

2021-07-13 06:18:18 字數 1169 閱讀 5095

//在當前結點前插入乙個元素,沒有給頭指標;

//定義的結點的結構體和頭指標的結構體;

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...