C語言中煉表怎麼刪除結點?

2021-09-07 02:14:57 字數 1129 閱讀 8439

第乙個方法:

/*

根據姓名刪除鍊錶的中的學生記錄

*/void deletebyname(struct student *head)

printf(

"請輸入要刪除的學生的姓名:");

scanf("%s

",name);

for(p=head->next,q=head;p!=null;p=p->next,q=q->next)

}if(p==null)

printf(

"要刪除的學生不存在。");

else

free

(p);

}

這個方法主要是 q->next=p->next ,然後釋放 p結點所佔的記憶體空間。

第2個方法:

/*

**************

函式功能:

刪除出勤學生姓名

返回:指向煉表表頭的指標

/**************

*/struct student * del_message(struct student*head)

break

; }

fwrite(pointer,

sizeof(struct student),1,fp); //

開始遍歷鍊錶結點,並寫入檔案

pointer=pointer->next; //

p指標指向新的結點(下乙個結點)

} fclose(fp);

outtextxy(220, 200, "

刪除出勤學生成功!");

return

head;

}

這個方法先找到p結點,也就是要刪除的結點,然後將其賦值給乙個臨時的temp結構變數,然後p結點的下乙個結點賦值給p結點,最後釋放temp結點所占用的記憶體。

temp=pointer;     //將找到的結點賦值給臨時temp結點變數

pointer=pointer->next;  //將p結點的下乙個節點 賦值給p結點

free(temp); //釋放臨時temp結點所佔記憶體

第二個方法是是從檔案中讀寫鍊錶結構。

不知道兩種方法是否一樣?

刪除鍊錶結點

劍指offer18題 刪除鍊錶的節點 題目描述 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。解題思路 該題在劍指offer中的原題是,給定乙個單鏈表的頭指標 指定結點指標,要求以o 1 的時間複雜度刪除該結點。解決方法為將待刪除結點的後繼結點的值 賦...

刪除鍊錶的結點

1.問題描述 給定鍊錶的頭結點和待刪除結點,要求刪除鍊錶的結點要求時間複雜度為o 1 來自 劍指offer 2.分析 我們都知道鍊錶的要想訪問某個結點必須要從頭結點挨個遍歷,並且單鏈表我們沒有指向前驅的結點,因此我們可以用狸貓換太子 用這個待刪除結點的下個結點裡面的內容,複製到這個待刪除結點,然後刪...

刪除鍊錶的結點

刪除鍊錶的結點 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾的 節點,您將只被給予要求被刪除的節點。比如 假設該鍊錶為1 2 3 4,給定您的為該鍊錶中值為3的第三個節點,那麼在呼叫了您的函式之後,該鍊錶則應變成1 2 4。這道題讓我們刪除鍊錶的乙個節點,更通常不同的是,沒有給我們鍊錶的起點...