C++ 实现链表

张开发
2026/4/15 12:34:55 15 分钟阅读

分享文章

C++ 实现链表
C 实现链表classLinkList{public:LinkList();~LinkList();unsignedlonglongintGetLinkListLength();unsignedlonglongintGetData(unsignedlonglongintindex);boolInsertData(unsignedlonglongintindex,unsignedlonglongintdata);boolUpdateData(unsignedlonglongintindex,unsignedlonglongintdata);boolDeleteData(unsignedlonglongintindex);private:structLink_List_Data{unsignedlonglongintdata;void*next;};Link_List_Data*LinkListData;};LinkList::LinkList(){this-LinkListDatanullptr;return;}LinkList::~LinkList(){while(true){LinkList::Link_List_Data*tmpthis-LinkListData;if(tmpnullptr){break;}this-LinkListData(LinkList::Link_List_Data*)tmp-next;deletetmp;}return;}unsignedlonglongintLinkList::GetLinkListLength(){unsignedlonglongintindex0;LinkList::Link_List_Data*tmpthis-LinkListData;while(true){if((LinkList::Link_List_Data*)tmpnullptr){break;}index;tmp(LinkList::Link_List_Data*)tmp-next;}returnindex;}unsignedlonglongintLinkList::GetData(unsignedlonglongintindex){LinkList::Link_List_Data*tempthis-LinkListData;for(unsignedlonglonginti0;iindex;i){temp(LinkList::Link_List_Data*)temp-next;}returntemp-data;}boolLinkList::InsertData(unsignedlonglongintindex,unsignedlonglongintdata){if(index0){//Insert data of header.if(this-LinkListDatanullptr){//Intialization.this-LinkListDatanewLinkList::Link_List_Data;this-LinkListData-datadata;this-LinkListData-nextnullptr;}else{LinkList::Link_List_Data*tempnewLinkList::Link_List_Data;temp-datadata;temp-nextthis-LinkListData;this-LinkListDatatemp;}returntrue;}elseif(indexthis-GetLinkListLength()){//Insert data of last;LinkList::Link_List_Data*tempthis-LinkListData;for(unsignedlonglonginti0;iindex-1;i){temp(LinkList::Link_List_Data*)temp-next;}temp-next(void*)(newLinkList::Link_List_Data);((LinkList::Link_List_Data*)temp-next)-datadata;((LinkList::Link_List_Data*)temp-next)-nextnullptr;returntrue;}elseif(indexthis-GetLinkListLength()){LinkList::Link_List_Data*tempthis-LinkListData;for(unsignedlonglonginti0;iindex-1;i){temp(LinkList::Link_List_Data*)temp-next;}LinkList::Link_List_Data*tmpnewLinkList::Link_List_Data;tmp-datadata;tmp-nexttemp-next;temp-next(void*)tmp;returntrue;}returnfalse;}boolLinkList::UpdateData(unsignedlonglongintindex,unsignedlonglongintdata){if(indexthis-GetLinkListLength()){LinkList::LinkList::Link_List_Data*tmpthis-LinkListData;for(unsignedlonglonginti0;iindex;i){tmp(LinkList::Link_List_Data*)tmp-next;}tmp-datadata;returntrue;}returnfalse;}boolLinkList::DeleteData(unsignedlonglongintindex){if(indexthis-GetLinkListLength()){if(index0){LinkList::Link_List_Data*tmpthis-LinkListData;this-LinkListData(LinkList::Link_List_Data*)this-LinkListData-next;deletetmp;}else{LinkList::Link_List_Data*tmpthis-LinkListData;for(unsignedlonglonginti0;iindex-1;i){tmp(LinkList::Link_List_Data*)tmp-next;}LinkList::Link_List_Data*temp(LinkList::Link_List_Data*)tmp-next;tmp-nexttemp-next;deletetemp;}returntrue;}returnfalse;}#includeiostreamintmain(intargc,char*argv[]){LinkList ll;constchar*StringHello World;ll.InsertData(0,(unsignedlonglongint)String);std::cout(constchar*)ll.GetData(0)std::endl;std::coutll.GetLinkListLength()std::endl;ll.InsertData(1,2);ll.InsertData(1,1);std::coutLength: ll.GetLinkListLength()std::endl;std::coutstd::endl;for(inti0;ill.GetLinkListLength();i){std::coutll.GetData(i)std::endl;}ll.UpdateData(0,0);std::coutstd::endl;for(inti0;ill.GetLinkListLength();i){std::coutll.GetData(i)std::endl;}std::coutstd::endl;ll.UpdateData(1,114514);std::coutll.GetLinkListLength()\n\nstd::endl;for(inti0;ill.GetLinkListLength();i){std::coutll.GetData(i)std::endl;}ll.InsertData(2,2);ll.UpdateData(3,3);std::coutstd::endl;std::coutLength: ll.GetLinkListLength()std::endl;for(inti0;ill.GetLinkListLength();i){std::coutll.GetData(i)std::endl;}std::coutstd::endl;ll.DeleteData(0);std::coutLength: ll.GetLinkListLength()std::endl;for(inti0;ill.GetLinkListLength();i){std::coutll.GetData(i)std::endl;}std::coutstd::endl;ll.DeleteData(1);std::coutLength: ll.GetLinkListLength()std::endl;for(inti0;ill.GetLinkListLength();i){std::coutll.GetData(i)std::endl;}std::coutstd::endl;ll.DeleteData(1);std::coutLength: ll.GetLinkListLength()std::endl;for(inti0;ill.GetLinkListLength();i){std::coutll.GetData(i)std::endl;}return0;}

更多文章