第十四周 任务二

刺骨的言语ヽ痛彻心扉 2022-06-12 12:14 280阅读 0赞
  1. /* (程序头部注释开始)
  2. * 程序的版权和版本声明部分
  3. * Copyright (c) 2011, 烟台大学计算机学院学生
  4. * All rights reserved.
  5. * 文件名称:链表的操作练习
  6. * 作 者: 薛广晨
  7. * 完成日期: 2012 年 05 月18 日
  8. * 版 本 号: x1.0
  9. * 对任务及求解方法的描述部分
  10. * 输入描述:这一段程序通过键盘输入数据,动态建立起了如图所示的链表,并通过一个循环输出。
  11. 现在我们通过下面的任务,用面向对象的程序设计的思维看待最简单的动态链表,初步体验有关的操作。
  12. 任务要求是:在已有代码的基础上完善程序,完成动态链表的简单操作。
  13. * 问题描述:
  14. * 程序头部的注释结束
  15. */
  16. #include<iostream>
  17. using namespace std;
  18. class Student
  19. {
  20. public:
  21. Student(int n,double s){num = n; score = s; next = NULL;}
  22. Student *next;
  23. int num;
  24. double score;
  25. };
  26. class MyList
  27. {
  28. public:
  29. MyList(){head = NULL;}
  30. MyList(int n, double s){head = new Student(n, s);} //以Student(n,s)作为单结点的链表
  31. int display(); //输出链表,返回值为链表中的结点数
  32. void insert(int n, double s); //插入:将Student(n,s)结点插入链表,该结点作为第一个结点
  33. void append(int n, double s); //追加:将Student(n,s)结点插入链表,该结点作为最后一个结点
  34. void cat(MyList &il); //将链表il连接到当前对象的后面
  35. int length(); //返回链表中的结点数
  36. private:
  37. Student *head;
  38. };
  39. int MyList::display() //输出链表,返回值为链表中的结点数
  40. {
  41. Student *p;
  42. int n = 0;
  43. p = head;
  44. while(p != NULL)
  45. {
  46. cout << p-> num << " " << p->score << endl;
  47. p = p->next;
  48. ++n;
  49. }
  50. return n;
  51. }
  52. void MyList::insert(int n, double s) //插入:将Student(n,s)结点插入链表,该结点作为第一个结点
  53. {
  54. Student *p = head;
  55. head = new Student(n, s);
  56. head->next = p;
  57. }
  58. void MyList::append(int n, double s) //追加:将Student(n,s)结点插入链表,该结点作为最后一个结点
  59. {
  60. Student *p = head;
  61. while (p->next != NULL)
  62. {
  63. p = p->next;
  64. }
  65. p->next = new Student(n, s);
  66. }
  67. void MyList::cat(MyList &il) //将链表il连接到当前对象的后面
  68. {
  69. Student *p = head;
  70. while (p->next != NULL)
  71. {
  72. p = p->next;
  73. }
  74. p->next = il.head;
  75. }
  76. int MyList::length() //返回链表中的结点数
  77. {
  78. int n = 0;
  79. Student *p = head;
  80. while (p->next != NULL)
  81. {
  82. p = p->next;
  83. ++n;
  84. }
  85. return n;
  86. }
  87. int main()
  88. {
  89. int n;
  90. double s;
  91. MyList head1;
  92. cout << "input head1: " << endl; //输入head1链表
  93. for(int i = 0; i < 3; i++)
  94. {
  95. cin >> n >> s;
  96. head1.insert(n, s); //通过“插入”的方式
  97. }
  98. cout << "head1: " << endl; //输出head1
  99. head1.display();
  100. MyList head2(1001, 98.4); //建立head2链表
  101. head2.append(1002, 73.5); //通过“追加”的方式增加结点
  102. head2.append(1003, 92.8);
  103. head2.append(1004, 99.7);
  104. cout << "head2: " << endl; //输出head2
  105. head2.display();
  106. head2.cat(head1); //反head1追加到head2后面
  107. cout << "length of head2 after cat: " << head2.length() << endl;
  108. cout << "head2 after cat: " << endl; //显示追加后的结果
  109. head2.display();
  110. system("pause");
  111. return 0;
  112. }

1337346728_9597.jpg

发表评论

表情:
评论列表 (有 0 条评论,280人围观)

还没有评论,来说两句吧...

相关阅读

    相关 四周 任务四扩展

    /任务 4 扩充 2(选做):手工输入工资?!太让人不能忍受了。现给出包含了 500 个职工工资的文件 salary.txt,从文件中读数据,完成上面的工作。

    相关 四周 任务

    /设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number表示的

    相关 四周 任务

    //设计一个“正整数”类,并通过一系列的成员函数对其性质进行做出判断或列出相关联的数值。下面给出类声明,请实现各成员函数。另外,模仿已经给出的main()函数,完成你所