C++实现单链表

直接上代码吧。。。

 

//LinkedList.hpp
#include<iostream> #include<string> using namespace std; class LinkedList{ public: LinkedList(){ head=NULL; size=0; } ~LinkedList(){ node* p; while(head){ p=head; head=head->next; delete p; } } void addAtEnd(int e){ if(head==NULL){ head=new node(e,NULL); size++; } else{ node* p=head; while(p->next){ p=p->next; } p->next=new node(e,NULL); size++; } } void addAtIndex(int e,int index){ if(index<0) {cout<<"Invalid operation!"<<endl;} if(index==0){ node *p=new node(e,head); head=p; size++; } else{ node* p=head; for(;index>0;index--){ if(p==NULL) { cout<<"Space overflows!"<<endl; break; } p=p->next; } node* q=head; while(q->next!=p){ q=q->next; } node* k=new node(e,p); q->next=k; size++; } } void deleteAtElement(int e){ node* p=head; while(p->next){ if(p->data==e&&p==head){ head=head->next; delete p; p=head; } else if(p->data==e&&p!=head){ node* q=head; while(q->next!=p){ q=q->next; } q->next=p->next; delete p; size--; p=head; } p=p->next; } } void deleteAtEnd(){ if(head==NULL) ; else { node* p=head; while(p->next){ p=p->next; } node* q=head; while(q->next!=p){ q=q->next; } q->next=NULL; delete p; p=NULL; size--; } } bool isEmpty(){ return (size==0); } int showSize(){ return size; } void travelList(){ node* p=head; if(p==NULL) cout<<"Empty List!"<<endl; else if(p->next==NULL){ cout<<p->data<<endl; } else { cout<<p->data; p=p->next; while(p){ cout<<"->"<<p->data; p=p->next; } cout<<endl; } } private: class node{ public: node(int d = 0,node* n = NULL):data(d),next(n){} ~node(){next = NULL;} int data; node* next; }*head; int size; };
//Test.cpp
#include"LinkedList.hpp" #include<iostream> using namespace std; int main(int argc,char* argv[]){ LinkedList test; test.addAtEnd(1); test.travelList(); test.addAtEnd(2); test.travelList(); test.addAtEnd(3); test.travelList(); test.addAtEnd(4); test.travelList(); test.addAtEnd(5); test.travelList(); test.deleteAtEnd(); test.travelList(); test.deleteAtEnd(); test.travelList(); test.addAtIndex(4,2); test.travelList(); test.addAtIndex(4,2); test.travelList(); test.deleteAtElement(4); test.travelList(); cout<<test.isEmpty()<<endl; cout<<test.showSize()<<endl; return 0; }

应该是对的。。如有错误欢迎指出,我先溜了

posted @ 2019-05-28 23:49  CrossingX  阅读(519)  评论(0编辑  收藏  举报