#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...