用C++语言和类实现单链表,含头结点
属性包括:data数据域、next指针域
操作包括:插入、删除、查找
注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据
类定义参考
标签:def 语言 void define 输出 null 插入 查找 img
用C++语言和类实现单链表,含头结点
属性包括:data数据域、next指针域
操作包括:插入、删除、查找
注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据
类定义参考
数据之间用空格隔开,
第1行输出创建后的单链表的数据
每成功执行一次操作(插入或删除),输出执行后的单链表数据
每成功执行一次查找,输出查找到的数据
如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出单链表
#include<iostream> using namespace std; #define ok 0 #define error -1 class CNode { int data; CNode *next; public: CNode() { next=NULL; } CNode(int n,CNode *p) { data=n; next=p; } int getdata() { return data; } CNode *getnext() { return next; } void setnext(CNode *p) { next=p; } }; class CList { friend class CNode; CNode *head; int nodenumber; public: CList() { head=NULL; nodenumber=0; } ~CList() { for(int i=0;i<nodenumber;i++) { CNode *p=head; head=head->getnext(); delete p; } } void nodeplus() { nodenumber++; } void nodeminus() { nodenumber--; } void createTailList(int *num,int n) { CNode *tail; CNode *s; head=new CNode(); tail=head; for(int i=0;i<n;i++) { s=new CNode(num[i],NULL); tail->setnext(s); tail=s; nodeplus(); } } CNode *findreal(int i) { if(i<=0||i>nodenumber) { cout<<"error"<<endl; return NULL; } else return indexfind(i); } CNode *indexfind(int i) { if(i<0) { return NULL; } CNode *p=head; int k=1; while(k<=i&&p!=NULL) { p=p->getnext(); k++; } return p; } int Insert(int i,int num) { if(i<=0||i>nodenumber+1) { cout<<"error"<<endl; return error; } nodeplus(); CNode *p=indexfind(i-1); CNode *temp=new CNode(num,p->getnext()); p->setnext(temp); return ok; } int Delete(int i) { if(i<1||i>nodenumber) { cout<<"error"<<endl; return error; } nodeminus(); CNode *p=indexfind(i-1); CNode *temp=p->getnext(); p->setnext(temp->getnext()); delete temp; return ok; } void display() { CNode *p=head->getnext(); while(p!=NULL) { cout<<p->getdata()<<" "; p=p->getnext(); } cout<<endl; } }; int main() { int n; cin>>n; int *num=new int[n]; for(int i=0;i<n;i++) { cin>>num[i]; } CList L; L.createTailList(num,n); L.display(); int index,number; cin>>index>>number; if(L.Insert(index,number)!=error) L.display(); cin>>index>>number; if(L.Insert(index,number)!=error) L.display(); cin>>index; if(L.Delete(index)!=error) L.display(); cin>>index; if(L.Delete(index)!=error) L.display(); cin>>index; if(L.findreal(index)!=NULL) cout<<L.findreal(index)->getdata()<<endl; cin>>index; if(L.findreal(index)!=NULL) cout<<L.findreal(index)->getdata()<<endl; delete []num; return 0; }
标签:def 语言 void define 输出 null 插入 查找 img
原文地址:https://www.cnblogs.com/SZU-DS-wys/p/12177873.html