1樓:匿名使用者
先用一個指標標記要釋放的那個節點,然後把前後兩個節點連結,最後釋放指標指向的這個節點。舉個例子,假設head是連結串列頭,現在要刪除連結串列中的第i個節點:
type
pnode = ^tnode;
tnode = record
data: integer;
next: pnode;
end;
procedure deletenode(var head: pnode; index: integer);
varcur, p: pnode;
i: integer;
begin
if (head = nil) or (index < 1) then exit;
if index = 1 then
begin
p := head;
head := p^.next;
dispose(p);
exit;
end;
cur := head;
i := 1;
while (i < index - 1) and (cur <> nil) do
begin
cur := cur^.next;
inc(i);
end;
if cur = nil then exit;
p := cur^.next;
if p <> nil then
begin
cur^.next := p^.next;
dispose(p);
end;
end;
2樓:20100621夏至
a->下一個= a->下一步 - >下一步;(刪除節點b,我想問一下,是不是在這裡加一個免費的(b)必須考慮刪除的節點b?)
首先a->下一個= a->下一步 - >下指的不僅僅是一個指標,指向c刪除bb不說,還有隻在記憶體中,ac,再進行後續的關係失去自由釋放的b
背後p = p->下無法刪除節點的節點,但向後移動指標p的理解
一個連結串列不知道頭結點,有一個指標指向其中一個結點,請問如何刪除這個指標指向的結點。
3樓:big蛇
要刪除連結串列中的一個結點,必須知道該結點的前一個和後一個結點(頭尾結點除外),否則無法完成。如a→b→c→d連結串列,要刪除b結點,只需把a指向c,再把b釋放記憶體即可。如只知道b,而不知道a,則刪除了b就無法把a與c相連
4樓:
將這個節點複製成下一個節點的值,然後刪除下一個節點node *p; // 當前節點
node *q;
q = p -> next;
p.data = q.data; // 複製q節點到pp -> next = q -> next; // 刪除qfree(q);
c語言的單向連結串列刪除節點的問題
5樓:
if(ptemp->inumber==a)//用於判斷學號是否等於輸入值
else//不是頭結點
}ppre=ptemp;
ptemp=ptemp->pnext;
每回釋放ptemp後要重新給值
6樓:青春無情
全部遍歷一次,while(p!=null)就可以了把if判斷放到while裡面,還有你的那個頭結點是不應該放資料的,不需要判斷
7樓:匿名使用者
struct node*deletnode(struct node*head,int delet_age)
p=head;
while(p!=null)
p=p->next;
}return head;
}沒有上機,樓主可以測試一下。
連結串列中的頭結點算不算第一個結點?如果我對連結串列實行刪除操作,刪除第i個結點,那i包不包括頭結點?
8樓:匿名使用者
頭結點是第一結點,只是一般沒有資料
頭結點後面是首元結點,即第一個存放資料的結點做刪除操作時,一般需要返回所刪除結點的資料,所以一般不刪除頭結點如果你執意要刪的話,當然也可以,
因為連結串列分為有頭結點的連結串列和無頭結點的連結串列
9樓:匿名使用者
頭結點算一個節點,裡面沒有值,它的作用就是通過它來遍歷整個連結串列,要刪除節點的話也需要頭結點找到某一個節點在進行操作,頭結點不能刪,刪了以後就找不到連結串列了
10樓:
如果不想刪除頭結點,在刪除節點中的函式中第一句寫p=p->next;
for(int i=0,inext;
n就是你想刪除的第幾個節點。。。。
關於連結串列插入刪除節點的問題
問等號兩邊互換這種問題還真少見。一般見的也就是某兩句的位置能否互換 s next p next 新結點指標域指向p的後繼結點 不能互換。你可以看到這句語句的上隔上一個語句s linklist malloc sizeof lnode 它是新malloc出來的,s裡面的東西都是 垃圾值 你如果把s的指標...
delphi中的小問題
簡單點吧,把label1.caption設定成10,然後 procedure tform1.timer1timer sender tobject begin label1.caption inttostr strtoint label1.caption 1 if strtoint label1.ca...
c語言關於刪除指定節點的問題,刪除第i個節點
void deletenode int i,struct nu head 上面是正確 因為p開始指向頭節點,也就是第一個節點,那麼移動一次,p指向是第二個節點 所以你的 k 0,1,2,i 1,移動了i 1次,p已經指向第i個節點了,而不是指向i 1個節點。並且是在執行完成 後,再移動位置,k再加1...