c++ 链表类创建 demo

1_student_link_list.cpp

#include<iostream>
using namespace std;

struct student{
    int id;string name;int age;
    student()=default;
    student(int i,string n,int a)
    :id(i),name(n),age(a)
    {}
    student(student &s){
        id=s.id;name=s.name;age=s.age;
    }
    ~student(){}
    student * next=nullptr;
};

student * head=nullptr;

int create_stu_list()
{
    student* p=nullptr;
    char ch;
    while(1)
    {
        p = new student();
        cin>>p->id>>p->name>>p->age;

        p->next = head;
        head = p;

        cout<<"是否继续?[Y/n]";
        cin>>ch;
        if(ch == 'n' || ch== 'N')
            break;
    }
    return 0;
}

int show_stu_list()
{
    student *p = head;
    while(p)
    {
        cout<<p->id<<" "<<p->name<<" "<<p->age<<endl;
        p = p->next;
    }
    return 0;
}

int main()
{
    create_stu_list();
    show_stu_list();
}

2_student_list_class.cpp

#include<iostream>
using namespace std;

struct student{
    int id;string name;int age;
    student()=default;
    student(int i,string n,int a)
    :id(i),name(n),age(a)
    {}
    student(student &s){
        id=s.id;name=s.name;age=s.age;
    }
    ~student(){}
    student * next=nullptr;
};

struct stu_list{
    private:
    student * head=nullptr;
    public:
    int create_stu_list()
    {
        student* p=nullptr;
        char ch;
        while(1)
        {
            p = new student();
            cin>>p->id>>p->name>>p->age;
            if(cin.fail())break;

            p->next = head;
            head = p;

//          cout<<"是否继续?[Y/n]";
//          cin>>ch;
//          if(ch == 'n' || ch== 'N')
//              break;
        }
        return 0;
    }

    int show_stu_list()
    {
    student *p = head;
    while(p)
    {
        cout<<p->id<<" "<<p->name<<" "<<p->age<<endl;
        p = p->next;
    }
    return 0;
}

};


int main()
{
    stu_list sl;
    sl.create_stu_list();
    sl.show_stu_list();

//  stu_list sl1;
//  sl1.create_stu_list();
//  sl1.show_stu_list();

//  create_stu_list();
//  show_stu_list();
}

3_work.cpp

#include<iostream>
using namespace std;

struct student{
    int id;string name;int age;
    student()=default;
    student(int i,string n,int a)
    :id(i),name(n),age(a)
    {}
    student(student &s){
        id=s.id;name=s.name;age=s.age;
    }
    ~student(){}
    student * next=nullptr;
};

struct stu_list{
    private:
    student * head=nullptr;
    public:
    int create_stu_list()
    {
        student* p=nullptr;
        char ch;
        while(1)
        {
            p = new student();
            cin>>p->id>>p->name>>p->age;
            if(cin.fail())break;

            p->next = head;
            head = p;

//          cout<<"是否继续?[Y/n]";
//          cin>>ch;
//          if(ch == 'n' || ch== 'N')
//              break;
        }
        return 0;
    }

    int show_stu_list()
    {
    student *p = head;
    while(p)
    {
        cout<<p->id<<" "<<p->name<<" "<<p->age<<endl;
        p = p->next;
    }
    return 0;
}
//return value: 0/OK,-1/failed;
int insert(student &s)
{
    student *p =new student(s);
    if(p == nullptr){
        perror("new p");
        return -1;
    }
    p->next = head;
    head = p;
    return 0;
}
int remove(int id)
{
    student* p=head,*q=head;
    while(p)
    {
        if(p->id == id)
            break;
        q =p;
        p=p->next;
    }
    if(p){
        if(p == head){
            head = head->next;
        }else
            q->next = p->next;
        delete p;
        return 0;
    }else
        return -1;  
}
};


int main()
{
    stu_list sl;
    student s(1005,"zhaoqi",20);
    sl.create_stu_list();
    sl.insert(s);
    sl.show_stu_list();
    cout<<"delete 1003:--------------"<<endl;
    sl.remove(1005);
    sl.remove(1004);
    sl.show_stu_list();

//  stu_list sl1;
//  sl1.create_stu_list();
//  sl1.show_stu_list();

//  create_stu_list();
//  show_stu_list();
}

4_work.cpp

#include<iostream>
using namespace std;

struct student{
    int id;string name;int age;
    student()=default;
    student(int i,string n,int a)
    :id(i),name(n),age(a)
    {}
    student(student &s){
        id=s.id;name=s.name;age=s.age;
    }
    ~student(){}
    student * next=nullptr;
};

struct stu_list{
    private:
    student * head=nullptr;
    public:
    int create_stu_list()
    {
        student* p=nullptr;
        char ch;
        while(1)
        {
            p = new student();
            cin>>p->id>>p->name>>p->age;
            if(cin.fail())break;

            p->next = head;
            head = p;

//          cout<<"是否继续?[Y/n]";
//          cin>>ch;
//          if(ch == 'n' || ch== 'N')
//              break;
        }
        return 0;
    }

    int show_stu_list()
    {
    student *p = head;
    while(p)
    {
        cout<<p->id<<" "<<p->name<<" "<<p->age<<endl;
        p = p->next;
    }
    return 0;
}
//return value: 0/OK,-1/failed;
int insert(student &s)
{
    student *p =new student(s);
    if(p == nullptr){
        perror("new p");
        return -1;
    }
    p->next = head;
    head = p;
    return 0;
}
int remove(int id)
{
    student* p=head,*q=head;
    while(p)
    {
        if(p->id == id)
            break;
        q =p;
        p=p->next;
    }
    if(p){
        if(p == head){
            head = head->next;
        }else
            q->next = p->next;
        delete p;
        return 0;
    }else
        return -1;  
}

int reserve_stu_list()
{
    student * new_head=nullptr,*p;
    if(head == nullptr)return -1;
    while(head)
    {
        p = head;
        head=head->next;

        p->next = new_head;
        new_head = p;
    }
    head = new_head;
    return 0;
}

int release_stu_list()
{
    student *p=head,*q=head;
    while(p)
    {
        q = p->next;
        delete p;
        p = q;
    }
    head= nullptr;
}

};


int main()
{
    stu_list sl;
    sl.create_stu_list();
//  cout<<"reserve list:-----------"<<endl;
//  sl.reserve_stu_list();
    sl.release_stu_list();
    sl.show_stu_list();
}
posted @ 2016-03-30 10:52  夜色下的港湾  Views(240)  Comments(0Edit  收藏  举报