刪除鍊錶中資料域相同的其他結點

2021-09-26 01:09:39 字數 701 閱讀 6312

刪除鍊錶中資料域相同的其他結點

已知線性鍊錶的第乙個結點的指標為list,請寫乙個演算法,刪除資料域值相同的結點,即若鍊錶中有多個結點具有相同的資料域值,只保留乙個結點,其餘結點從鍊錶中刪除,使得到的鍊錶中所有的結點的資料域值都不相同。

假設指標p指向新的資料結點,指標每移動一位,都要檢測是否在前面出現過,檢測每次q指標都從初始位置檢測,這樣時間複雜度o(n^2).

原來鍊錶的資料:

刪除之後資料為 :

// 刪除鍊錶中資料域相同的其他結點

void delete3(linklist list)else// if

}// while

if (flag==1)else// if

}// while

}

**1 有點繁瑣,請看第二種,直接遍歷刪除即可,不用設定flag等。

typedef struct nodenode,*linklist;

linklist delete(linklist list)else

}//while

p=p->link;

} // while

return list;

}

雖然時間複雜度沒有發生變化,但是,**更讓人理解。

刪除鍊錶A中與鍊錶B結點相同的結點

題目描述 有兩串鍊錶表示為a和b,刪除鍊錶a中的結點,滿足刪除條件的結點是該結點與鍊錶b中某結點的值相同。如下 include using namespace std typedef struct list plist int deletenode plist plist void createli...

刪除鍊錶中的結點

1.題目描述 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只被給定要求被刪除的節點。現有乙個鍊錶 head 4,5,1,9 它可以表示為 示例 1 輸入 head 4,5,1,9 node 5輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該...

刪除鍊錶中的結點

題目一 給你乙個鍊錶,刪除鍊錶的倒數第 n 個結點,並且返回鍊錶的頭結點。高階 你能嘗試使用一趟掃瞄實現嗎?示例 1 輸入 head 1,2,3,4,5 n 2 輸出 1,2,3,5 示例 2 輸入 head 1 n 1 輸出 示例 3 輸入 head 1,2 n 1 輸出 1 解法一 利用乙個佇列...