乙個無頭單鏈表中,乙個指標指向此單鏈表中間的乙個結點(不是第乙個結點,也不是尾結點),請將該結點刪除。
思想: 在不知道第一結點情況下,這個問題看起來無從下手。但是我們知道要刪除結點的資訊,以及要刪除結點的下一結點資訊以及下下個結點資訊。 知道這些,我們可以知道可以較容易刪除要刪除結點的下一結點。如何將問題轉換呢?只需將要刪除結點的資料和要刪除結點的下一結點的資料交換皆可。
**如下:
// 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,如下圖,因為沒有...