程式設計題目 在 O(1)時間內刪除鍊錶結點

2022-05-18 11:09:54 字數 1100 閱讀 6178

60.在 o(1)時間內刪除鍊錶結點(鍊錶、演算法)。

題目:給定鍊錶的頭指標和乙個結點指標,在 o(1)時間刪除該結點。鍊錶結點的定義如下:

struct listnode

;函式的宣告如下:

void deletenode(listnode* plisthead, listnode* ptobedeleted);

/*

60.在 o(1)時間內刪除鍊錶結點(鍊錶、演算法)。

題目:給定鍊錶的頭指標和乙個結點指標,在 o(1)時間刪除該結點。鍊錶結點的定義如下:

struct listnode

;函式的宣告如下:

void deletenode(listnode* plisthead, listnode* ptobedeleted);

*/#include

#include

typedef

struct

listnode

listnode;

void deletenode(listnode* plisthead, listnode*ptobedeleted)

if (ptobedeleted->m_pnext == null) //

刪除最後乙個節點

else

x->m_pnext =null;

free(ptobedeleted);

}return

; }

//把下乙個結點的資料複製到當前結點,實際刪除下一結點

listnode * tmp = ptobedeleted->m_pnext;

ptobedeleted->m_nkey = ptobedeleted->m_pnext->m_nkey;

ptobedeleted->m_pnext = ptobedeleted->m_pnext->m_pnext;

free(tmp);

}void printlist(listnode*plisthead)

printf("\n

");}void createlist(listnode* &plisthead)

}int

main()

程式設計題目 在 O(1)時間內刪除鍊錶結點

60.在 o 1 時間內刪除鍊錶結點 鍊錶 演算法 題目 給定鍊錶的頭指標和乙個結點指標,在 o 1 時間刪除該結點。鍊錶結點的定義如下 struct listnode 函式的宣告如下 void deletenode listnode plisthead,listnode ptobedeleted ...

在O 1 時間內刪除鍊錶節點

題目 給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 的時間刪除該節點。struct listnode void deletenode listnode plisthead,listnode ptobedeleted 演算法思路 一般我們是從頭節點開始遍歷,知道找到要刪除的節點的前面乙個節...

在 O 1 時間內刪除鍊錶節點

解題思路 如果該節點不是尾節點,那麼可以直接將下乙個節點的值賦給該節點,然後令該節點指向下下個節點,再刪除下乙個節點,時間複雜度為 o 1 如果鍊錶只有乙個節點,那麼直接 否則,就需要先遍歷鍊錶,找到節點的前乙個節點,然後讓前乙個節點指向 null,時間複雜度為 o n 綜上,如果進行 n 次操作,...