c 鍊錶刪除重複的資料

2022-05-19 14:59:25 字數 2315 閱讀 1174

#include typedef 

intdatatype;

struct

node //

結點建構函式

datatype data;

node*pnextnode;

};class

list

bool isempty(); //

判斷是否空表

bool insertlist(int i,datatype elem);  //

i的指標從1開始,而不是從0開始

void pushlist(datatype elem);   //

在鍊錶尾部新增元素

bool deletelist(int i); //

刪除指定位置的元素

void clearlist(); //

清除整條鍊錶

void deleterepetitivedata();//

刪除重複元素

void printlist(); //

按順序輸出鍊錶

intgetsize();

node* fine(int i); //

找到第i個結點並返回該結點的指標

node* finepre(int i); //

找到第i個結點前的結點,返回指標

};

#include "

list.h

"#include

#include

using

namespace

std;

//判斷空表

bool

list::isempty()

//在第i位插入資料

bool list::insertlist(int

i,datatype elem)

else

if (i>size) //

位標大於鍊錶長度時,在尾部新增

else}//

在尾部新增元素

void

list::pushlist(datatype elem)

else}//

列印鍊錶

void

list::printlist()

cout

intlist::getsize()

//找到第i個結點

node* list::fine(int

i) }//

找到i的前乙個個結點

node* list::finepre(int

i)

else

if(i==2

)

return

head;

else

return fine(i-1);}

//刪除第i個元素

bool list::deletelist(int

i)

else}//

清空整個鍊錶

void

list::clearlist()

size=0;}

//刪除重複元素

void

list::deleterepetitivedata()

else

cursor=cursor->pnextnode;

}

if(!flag)

stand=stand->pnextnode;

}int itemp=storge.size();

while (itemp--)

storge.clear();    //釋放vector記憶體

}

#include "

list.h

"#include

using

namespace

std;

void

main()

/*總結:

1.鍊錶類應該先寫fine()和findpre(),再寫插入和刪除

2.鍊錶的結構應該給每乙個結點加上乙個下標。因為下標在

操作時再加上的話,元素跟下標是不統一的,

如果有元素被刪除,下標將要重新分配。

這就導致

void

list::deleterepetitivedata()不能用

相對直接的方法在檢測到重複資料時就刪除資料,而要借助vector

間接刪除

*/

刪除重複鍊錶

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 class solution listnode newhead listnode malloc sizeof listnode newhead ...

刪除重複結點(鍊錶)

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 題目 tpid 13 tqid 11209 rp 1 ru activity oj qru ta coding interviews quest...

刪除鍊錶的重複節點

思路 就是找到不重複出現的節點,然後連線到新鍊錶上面 反思 在連線節點到新鍊錶的時候,每次都要把尾部節點的next指標設定為空!以防當前尾部節點真的是最後乙個節點卻沒給next設定指標域為空 struct listnode class solution listnode temp pnode 此時指...