#include typedefintdatatype;
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 此時指...