#include <iostream> using namespace std; class list{ public: int data; list* next; }; class list00{ list*head; public: list00(int a[],int n);//创建链表 ~list00(); void Printlist();//遍历 int Length();//输出长度 void find_and_delete(int n);//删除 void add(int a[],int n);//在链表后加一串链表 }; list00::list00(int a[],int n){ head=new list; head->next = NULL; list*r=head; for(int i=0;i<n;i++){ list*p=new list; p->data=a[i]; p->next=NULL; r->next=p; r=p; } r->next=NULL; } list00::~list00(){ list*p=head->next; do{ list*q=p; p=p->next; delete q; } while (p!=NULL); delete head; } void list00::Printlist(){ list*p=head->next; list*q=p->next; do{ cout<<p->data<<" "; p=q; q=q->next; } while (q!=NULL); cout<<p->data; cout<<endl; } int list00::Length(){ int n=0; list*p=head->next; do{ n++; p=p->next; } while (p->next!=NULL); n++; return n; } void list00::find_and_delete(int n){ int k=n; list*p=head->next; list*pre=head; while (k!=0){ k--; pre=pre->next; p=p->next; } pre->next=p->next; delete p; } void list00::add(int a[],int n) { list*p=head->next; list*q=p->next; do{ p=q; q=q->next; } while (q!=NULL); //寻找末节点 for (int i = 0; i < n; ++i) { list *cur=new list; cur->data=a[i]; cur->next=NULL; p->next=cur; p=p->next; } } int main(){ int a[]={1,2,3,4,5,6,7,8,9}; list00 l(a,9); cout<<l.Length()<<endl; l.Printlist(); int key; cin>>key; l.find_and_delete(key); int n; cin>>n; int b[n]; for (int i = 0; i < n; ++i) { cin>>b[i]; } l.add(b,n); l.Printlist(); return 0; }
简单的链表实现
最新推荐文章于 2024-07-14 19:56:17 发布