#include<iostream> using namespace std; class Student { public: Student(int n,double s){num=n;score=s;next=NULL;} Student *next; int num; double score; }; class MyList { public: MyList(){head=NULL;} MyList(int n,double s){head=new Student(n,s);} //以Student(n,s)作为单结点的链表 int display(); //输出链表,返回值为链表中的结点数 void insert(int n,double s); //插入:将Student(n,s)结点插入链表,该结点作为第一个结点 void append(int n,double s); //追加:将Student(n,s)结点插入链表,该结点作为最后一个结点 void cat(MyList &il); //将链表il连接到当前对象的后面 int length(); //返回链表中的结点数 private: Student *head; }; int MyList::display() { if(head==NULL) { cout<<"空"<<endl; return 0; } Student *p; //Student *head; p=head; int i=0; while(p!=NULL) { cout<<p->num<<p->score<<endl; p=p->next; ++i; //cout<<i; } return i; } void MyList::insert(int n,double s) //插入:将Student(n,s)结点插入链表,该结点作为第一个结点 { Student *p=new Student(n,s); ///////////////// //Student *p; p->next=head; head=p; } void MyList:: append(int n,double s) //追加:将Student(n,s)结点插入链表,该结点作为最后一个结点 { Student *p=new Student(n,s); if(head==NULL) head=p; else { Student *pts=head; Student *pte=pts->next; while(pte) { pts=pte; pte=pts->next; } pts->next=p; } //Student *p,*q; //p->next=q; //q->next=NULL; } void MyList::cat(MyList &il) //将链表il连接到当前对象的后面 { Student *p; p=il.head ; while(p) { append(p->num,p->score); p=p->next; } //p->next=il.head;////////////////////////////////////////////////////////////////// } int MyList::length() //返回链表中的结点数 { int i=0; Student *p; p=head; while(p!=NULL) { p=p->next; ++i; } return i; } int main() { int n; double s; MyList head1; cout<<"input head1: "<<endl; //输入head1链表 for(int i=0;i<3;i++) { cin>>n>>s; head1.insert(n,s); //通过“插入”的方式 } cout<<"head1: "<<endl; //输出head1 head1.display(); MyList head2(1001,98.4); //建立head2链表 head2.append(1002,73.5); //通过“追加”的方式增加结点 head2.append(1003,92.8); head2.append(1004,99.7); cout<<"head2: "<<endl; //输出head2 head2.display(); head2.cat(head1); //反head1追加到head2后面 cout<<"length of head2 after cat: "<<head2.length()<<endl; cout<<"head2 after cat: "<<endl; //显示追加后的结果 head2.display(); system("pause"); return 0; }
感悟:看了看课本,又看了看原来老师讲的例子,就是不敢下手啊,唯恐写错了,殊不知自己还是能写对点的,就是不全面啊,还得努力啊,离要求差远了。