一、解題思路 (1)需要先判斷一下鏈表的情況:題目描述:
成都創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|成都網(wǎng)站維護|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋成都純水機等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身定制品質(zhì)網(wǎng)站。給你一個鏈表的頭節(jié)點?
head
和一個整數(shù)?val
,請你刪除鏈表中所有滿足?Node.val == val
的節(jié)點,并返回?新的頭節(jié)點?。
1.鏈表是否為空,為空直接返回NULL。
2.需要刪鏈表的頭節(jié)點,則head->next。?
3.正常刪除鏈表中的節(jié)點。
(2)為此的解決方法1是我們在最前方加一個if的判斷語句就可以,防止程序出問題
2是我們需要刪除頭節(jié)點的話那我們新建一個頭節(jié)點H,讓H->next=head,這樣的話如果刪除了head,也不影響鏈表。
3我學(xué)數(shù)據(jù)結(jié)構(gòu)學(xué)的不行,我就直接用了兩個指針,判斷值val與一個指針的next->val,這樣的話,我可以刪除這個節(jié)點,我不會判斷指針的val然后刪除的。
二、代碼代碼如下(示例):
struct ListNode* removeElements(struct ListNode* head, int val){
if(head==NULL) return NULL;//先判斷是不是空鏈表
struct ListNode*H;
H=(struct ListNode*)malloc(sizeof(struct ListNode));
H->next=head;//新建頭節(jié)點
struct ListNode*p=H;
struct ListNode*s=NULL;//建立兩個指針,p指向我的頭指針,s指針先是NULL,刪除節(jié)點用。
while(p->next!=NULL)
{
if(p->next->val==val)
{
s=p->next;
p->next=p->next->next;//只會這種刪除方式,希望大佬會的能跟我講講(講明白點,我笨嗚嗚嗚)
free(s);
}
else
{
p=p->next;
}
}
return H->next;//head是否被刪除不影響
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧