190507打卡 刪除無序單鏈表中值重複出現的節點

2021-09-21 13:31:25 字數 620 閱讀 9216

題目描述:

給定乙個無序單鏈表的頭結點head,刪除其中值重複出現的節點。

例如:1->2->3->3->4->4->2->1->1->null,刪除值重複出現的節點後為:

1->2->3->4->null。

要求:額外空間複雜度為o(1)

思路:類似於選擇排序的過程,時間複雜度為o(n * n),額外空間複雜度為o(1)

首先是頭結點,值為1,向後遍歷鍊錶找到和1相同的節點並刪除,

此時鍊錶變為:1->2->3->3->4->4->2->null,然後是下乙個節點,也就是值為2的節點,找到相同並刪除,

此時鍊錶變為1->2->3->3->4->4->null,重複此過程,直至相同節點全部刪除

public

class

code_020_removeduplicateelements

}public

static node removeduplicate

(node head)

else

cur = cur.next;

} equal = equal.next;

}return head;

}}

2019 04 09打卡(資料結構單鏈表2)

單鏈表的刪除和尾插法建立部分 來自教材 1 int remove linklist first,int i,datatype x 11 刪除表中第i個元素,通過引用型引數x返回該元素的值 1 尾插法建立單鏈表 2 include linklist.h 3 void createlistrear li...

190505打卡 兩個單鏈表生成相加鍊錶

題目描述 假設鍊錶中每乙個節點的值都在0 9之間,那麼鍊錶整體就可以代表乙個整數。例如 9 3 7,既可以代表整數937。給定兩個這種鍊錶的頭結點head1和head2,請生成代表兩個整數相加值的結果鍊錶。例如 鍊錶1為9 3 7,鍊錶2為6 3,最後生成新的結果鍊錶為1 0 0 0。思路 將兩個鍊...

刪除元素值相同的有序 無序單鏈表

注 1 設定指標p最初指向第1個結點,當p的指標域不為空,既p不是最後乙個結點時進入迴圈體內進行判斷。2 在迴圈過程中判斷p所指的結點的後繼q是否與p的資料域相同,如果相同則刪除q 不同則說明了鍊錶中沒有與p的資料域相同的結點,則p後移 include stdio.h include stdlib....