資料結構 單鏈表

2021-09-25 07:39:28 字數 3758 閱讀 4466

#include #include #include using namespace std;

templateclass linknode

linknode(t data)

~linknode()

void setvalue(t v)

void setnext(linknode* n)

linknode* getnext()

t getvalue()

};templateclass linklist

linklist(linknodenode)

~linklist()

//獲取鍊錶長度

int getlen();

//在鍊錶尾部插入節點

void inserttailnode(t data);

//在特定位置插入節點

void insertmidnode(t data,int pos);

//在鍊錶首部插入節點

void insertheadnode(t data);

//刪除鍊錶指定位置節點

void deletemidnode(int pos);

//返回鍊錶指定位置的節點

linknode*getspecificnode(int pos);

//刪除鍊錶第乙個指定值的節點

void deletefirstspecificnode(t data);

//刪除鍊錶所有指定值的節點,並返回已刪除節點數目

int deleteallspecificnode(t data);

//清空鍊錶

void clearlist();

//鍊錶轉置

void reverselist();

//找到單鏈表倒數第m個結點,不得求出鍊錶長度,不得對鍊錶進行逆轉

t getreciprocalm(int m);

//單鏈表是否有環的判斷,求出環內節點數目,並返回環的入口節點

linknode* iscyclic();

//找到鍊錶的中間節點

linknode* findmid();

//鍊錶列印

void print();

}

//獲取鍊錶長度

templateint linklist::getlen()

return len;

}

//在鍊錶尾部插入節點

templatevoid linklist::inserttailnode(t data)

linknode* tail = new linknode(data);

if(index==null)

else

}

//在特定位置插入節點

templatevoid linklist::insertmidnode(t data,int pos)

if(pos<=0||pos>getlen())

index = index->getnext();

idx++;

}linknode*node = new linknode(data);

linknode*tmp = index->getnext();

index->setnext(node);

index->getnext()->setnext(tmp);

return;

}

//在鍊錶首部插入節點

templatevoid linklist:: insertheadnode(t data)

linknodenode = new linknode(data);

linknode*tmp = head;

head->setnext(node);

head->getnext()->setnext(tmp);

}

刪除鍊錶指定位置節點

//刪除鍊錶指定位置節點

templatevoid linklist:: deletemidnode(int pos)

index = index->getnext();

idx++;

}index->setnext(index->getnext()->getnext());

}

//返回鍊錶指定位置的節點

templatelinknode* linklist:: getspecificnode(int pos)

index = index->getnext();

idx++;

}return index->getnext();

}

//刪除鍊錶第乙個指定值的節點

templatevoid linklist::deletefirstspecificnode(t data)

index = index->getnext();

}cout<<"no such node"index = index->getnext();

}return count;

}

//清空鍊錶

templatevoid linklist::clearlist()

}

//鍊錶轉置

templatevoid linklist::reverselist()

i2->setnext(i1);

index->setnext(null);

head->setnext(i2);

}

//找到單鏈表倒數第m個結點,不得求出鍊錶長度,不得對鍊錶進行逆轉

templatet linklist::getreciprocalm(int m)

while(im!=null)

return index->getvalue();

}

//單鏈表是否有環的判斷,求出環內節點數目,並返回環的入口節點

templatelinknode* linklist::iscyclic()

}if(flag == true)

cout<<"環長度為"q = q->getnext();

}cout<<"環連線點值為"}

length += count-1;

cout<<"鍊錶長度為"return p;

}

//鍊錶列印

templatevoid linklist::print()

cout<*ll = new linklist();

vectorv = ;

for(int i=0;iinserttailnode(v[i]);

}ll->print();

ll->deletefirstspecificnode('a');

ll->print();

//cout//ll->insertmidnode('a',4);

//ll->reverselist();

//ll->print();

//cout//coutgetvalue()setnext(ll->getspecificnode(1));

//ll->iscyclic();

if(ll->getlen()%2!=0)

else

return 0;

}

資料結構單鏈表

初學資料結構,貼段自己編寫的單鏈表程式,希望自己能夠一直以強大的學習熱情持續下去!自勉!2012年3月30日 於大連 include using namespace std typedef struct node linklist,node linklist makelist int n void ...

資料結構 單鏈表

今天浪費了好多時間,也許是心裡想著明天的考試吧 可自己也知道這次的考試,自己畢竟過不了了,只好等到今年11月份,想想那時自己已經大三了 還有那麼多時間嗎!很懊惱今天不知怎麼回事,感嘆環境真的可以影響乙個人,真的可以 把今天的學習筆記寫下來,沒有進行好好的整理,這回單鏈表的功能較多,操作比較散,最後乙...

資料結構 單鏈表

實現乙個單鏈表 1 查詢 查詢第index個節點 查詢指定的元素 2 插入 將指定的元素插入到第index個節點上 3 刪除 將第index個節點刪除 規律 刪除和新增元素前務必儲存兩個元素的位址引用資訊 public class mylinkedlist 記錄鍊錶結構的頭結點位址引用 privat...