程式設計之美 從無頭鍊錶中刪除結點

2021-06-22 08:14:31 字數 1062 閱讀 8501

乙個無頭單鏈表中,乙個指標指向此單鏈表中間的乙個結點(不是第乙個結點,也不是尾結點),請將該結點刪除。

思想:  在不知道第一結點情況下,這個問題看起來無從下手。但是我們知道要刪除結點的資訊,以及要刪除結點的下一結點資訊以及下下個結點資訊。 知道這些,我們可以知道可以較容易刪除要刪除結點的下一結點。如何將問題轉換呢?只需將要刪除結點的資料和要刪除結點的下一結點的資料交換皆可。 

**如下:

// noheadlist.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include using namespace std;

typedef int type;

//單鏈表結點

typedef struct node

node,*pnode;

//建立無頭結點單鏈表

void createlist(pnode &l,type *a,int n)

}//列印單鏈表

void printlist(pnode l)

cout

} return i;

}//取出單鏈表中某一結點

pnode getnode(int i,pnode l)

return temp;

}//刪除無頭結點單鏈表中的某一點 無法知道第一結點位置,只知道要刪除的結點(不是第一結點,也不是尾結點)

type deletenode(pnode p)

int _tmain(int argc, _tchar* argv)

; pnode l=null;

createlist(l,a,6);

printlist(l);

pnode tp=getnode(3,l);//取乙個要刪除的結點 模擬出隨機指向單鏈表乙個結點的指標

deletenode(tp);

printlist(l);

return 0;

}

結果:

程式設計之美 從無頭單鏈表中刪除結點

問題 假設有乙個沒有頭指標的單鏈表。乙個指標指向此單鏈表中間的乙個節點 不是第乙個也不是最後乙個 如何將該結點刪除?分析 假設給定的指標為pcurrent,node pnext pcurrent next pnext指向pcurrent的下乙個結點 根據題意,pnext null.若pcurrent...

《程式設計之美》 從無頭單鏈表中刪除節點

問題 假設有乙個沒有頭指標的單鏈表。乙個指標指向此單鏈表中間的乙個節點 非第乙個節點,也非最後乙個節點 請將該節點從單鏈表中刪除。分析與解法 若要刪除該節點,正常情況下,應該要知道該節點的前面節點的指標,但是由於單鏈表中沒有頭結點,所以無法追溯到該節點前面的那個節點,因此,這裡採用了 狸貓換太子 的...

程式設計之美 從無頭單鏈表中刪除節點

1.問題描述 假設有乙個沒有頭指標的單鏈表。乙個指標指向此單鏈表中間的乙個節點 不是第乙個,也不是最後乙個 請將該節點從單鏈表中刪除。如下圖所示 2.分析與解法 假設給定的指標為pcurrent,node pnext pcurren next 其中pcurren next!null,如下圖,因為沒有...