c++ 链表类创建 demo
2016-03-30 10:52
344 查看
1_student_link_list.cpp
2_student_list_class.cpp
3_work.cpp
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; }; 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(); }
相关文章推荐
- C++ 构造函数深入理解
- [置顶] Android——NativeActivity - C/C++ Apk开发
- c++ 拷贝构造函数
- c语言写的批量处理文件小demo,修改后使得文件的md5值变动
- 求从1到n的数中,总共包含了多少个1
- C++ new delete
- C语言常见字符串面试题
- c++ 析构函数
- C++ Boost智能指针
- c++成员初始化和构造函数
- C语言——可变参数
- C语言数据类型取值范围
- C++ 类和对象浅解
- C++ 对象复制 内存拷贝
- 【poj 1836】Alignment 题意&题解&代码(C++)
- c++ constexpr
- C语言复习1之指针
- C++ nullptr
- C++ 函数指针批处理
- c++ 函数指针