首页 > 代码库 > C++链表
C++链表
#include <iostream>#include <string.h>using namespace std;class Student{public: Student (char *name); ~Student();public: char name[30]; Student *next; static Student *point;};Student::Student (char *name){ strcpy(Student::name,name); this->next=point; point=this;}Student::~Student ()//析构过程就是节点的脱离过程{ cout<<"析构:"<<name<<endl; if(point==this) { point=this->next; cin.get(); return; } for(Student *ps=point;ps;ps=ps->next) { if(ps->next==this) { cout<<ps->next<<"|"<<this->next<<endl; ps->next=next;//=next也可以写成this->next; cin.get(); return; } } cin.get();}Student* Student::point=NULL;int main(){ Student *c = new Student("marry"); //注意这里用的*c Student a("colin"); Student b("jamesji"); delete c; //所以才能用delete Student *fp=Student::point; while(fp!=NULL) { cout<<fp->name<<endl; fp=fp->next; } cin.get();}
this替代了以前的current指针。 全局指针在这里被类的静态成员指针所替代(类的静态成员完全可以替代全局变量
是等链表都输出完后才开始析构吗?
析构函数
for(Student *ps=point;ps;ps=ps->next) { if(ps->next==this) { cout<<ps->next<<"|"<<this->next<<endl; ps->next=next;//=next也可以写成this->next; cin.get(); return; } }
是都没用到吗?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。