免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ list
最近访问板块 发新帖
查看: 1013 | 回复: 0
打印 上一主题 下一主题

[C++] list [复制链接]

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-08-12 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-22 00:55 |只看该作者 |倒序浏览
本帖最后由 framily 于 2015-07-22 00:57 编辑
  1. /* list.h */

  2. #pragma once

  3. typedef int Data;

  4. struct Node
  5. {
  6.         Data data;
  7.         Node *next;
  8. };

  9. class List
  10. {
  11.         Node *head_;

  12. public:
  13.         List();
  14.         ~List();
  15.         void AddHead(Data data);
  16.         int GetCount();
  17.         void Print();
  18.         void RemoveAll();
  19. };

复制代码
  1. /* list.cpp */

  2. #include "List.h"
  3. #include <iostream>

  4. using namespace std;


  5. List::List()
  6. {
  7.         head_ = NULL;
  8. }


  9. List::~List()
  10. {
  11.         RemoveAll();
  12. }

  13. void List::AddHead(Data data)
  14. {
  15.         Node *p = new Node;
  16.         p->data = data;
  17.         p->next = head_;
  18.         head_ = p;
  19. }

  20. int List::GetCount()
  21. {
  22.         int i = 0;
  23.         Node *p = head_;

  24.         while (p)
  25.         {
  26.                 p = p->next;
  27.                 i++;
  28.         }

  29.         return i;
  30. }

  31. void List::Print()
  32. {
  33.         Node *p = head_;

  34.         while (p)
  35.         {
  36.                 cout << p->data << endl;
  37.                 p = p->next;
  38.         }
  39. }

  40. void List::RemoveAll()
  41. {
  42.         Node *p = head_, *q;

  43.         while (p)
  44.         {
  45.                 q = p;
  46.                 p = p->next;
  47.                 delete q;
  48.         }

  49.         head_ = NULL;
  50. }
复制代码
  1. /* student.h */

  2. #pragma once

  3. #include "List.h"

  4. class Student
  5. {
  6.         List list1, list2;

  7.         void Input();

  8. public:
  9.         int Menu();
  10.         void Print();
  11.         Student();
  12.         ~Student();
  13. };

复制代码
  1. /* student.cpp */

  2. #include "Student.h"
  3. #include <iostream>

  4. using namespace std;


  5. void Student::Input()
  6. {
  7.         cout << "请输入一个数字:";
  8.        
  9.         Data data;

  10.         cin >> data;
  11.         cout << "请选择一个链表(1-2):";

  12.         int i = 0;

  13.         cin >> i;

  14.         if (i >= 1 && i <= 2)
  15.         {
  16.                 List *ps[] = { &list1,&list2 };
  17.                 List *p = ps[i - 1];

  18.                 p->AddHead(data);
  19.                 p->Print();
  20.                 cout << "链表(" << i << ")总共有" << p->GetCount() << "条数据" << endl;               
  21.         }
  22. }

  23. int Student::Menu()
  24. {
  25.         cout << "1、录入数据" << endl;
  26.         cout << "2、打印数据" << endl;
  27.         cout << "0、退出" << endl;

  28.         int i = 0;

  29.         cin >> i;

  30.         switch (i)
  31.         {
  32.         case 1:
  33.                 Input();
  34.                 break;
  35.         case 2:
  36.                 Print();
  37.                 break;
  38.         }

  39.         return i;
  40. }

  41. Student::Student()
  42. {
  43. }


  44. Student::~Student()
  45. {
  46. }

  47. void Student::Print()
  48. {
  49.         cout << "请选择一个链表(1-2):";
  50.        
  51.         int i = 0;

  52.         cin >> i;

  53.         if (i >= 0 && i <= 2)
  54.         {
  55.                 List *ps[] = { &list1,&list2 };

  56.                 ps[i-1]->Print();
  57.                 cout << "链表(" << i << ")有" << ps[i-1]->GetCount() << "条数据" << endl;
  58.         }
  59. }
复制代码
  1. /* source.cpp */

  2. #include "Student.h"

  3. int main(int arg,char **argv)
  4. {
  5.         Student st;

  6.         while (st.Menu())
  7.                 ;

  8.         return 0;
  9. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP