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 次操作,...