当前位置:   article > 正文

单链表头插法和尾插法_单链表尾插法

单链表尾插法

 1.头插法

头插法:每次把新节点插入头节点之后创建的单链表数据输入顺序相反

在这里插入图片描述

 

防止单链表是空的而设的。

当链表为空的时候,带头结点的头指针指向头结点头结点的指针域存储的数值为NULL。

<1>.头结点

初始化一个空表,创建一个头结点数据域不存储数据(为空)令指针域为空

<2>.创建第一个结点,s指针指向它;并且将这个结点放在头结点后边

 

解析:

(1).s->next = L->next;

L:表示头结点的头指针,指向头结点,存储头结点的地址。

L->next:头指针指向的头结点指针域,即L->next存储头结点指针域的地址,为NULL。

s:新建一个结点。

s->next:s结点的指针域,存储下一个结点的地址。

翻译:

s结点的指针域指向的是头结点的指针域,创建时为NULL;

(2).L->next = s;

L:表示头结点的头指针,指向头结点,存储头结点的地址。

L->next:头指针指向的头结点指针域,即L->next存储头结点指针域的地址,为NULL。

s:新建一个结点。

翻译:L->next头结点的指针域指向新节点s,保存结点s的地址。

<3>.创建第二个结点,插入到头结点后边

 

 分析同<2>.

2.尾插法

尾插法:每次把新节点链接链表的尾部,因此需要一个尾指针永远指向链表的尾节点

<1>.初始化后的空表,只有一个头结点,设置一个尾指针r指向头结点。 

<2>.插入一个新节点s

 

 解析:

  1. ① s->next=NULL:
  2. s节点的指针域置空。
  3. ② r->next=s:
  4. 将s节点的地址赋值给r节点的指针域,即将新节点s插入尾节点r之后。
  5. ③ r=s:
  6. 将s节点的地址赋值给r,即r指向新的尾节点s。

 <3>.插入第二个结点

 

  1. #include <iostream>
  2. using namespace std;
  3. class List{
  4. public:
  5. List(){create_List();}
  6. ~List(){}
  7. void create_List();
  8. void insert_head(const int &d);
  9. void insert_end(const int &d);
  10. void print();
  11. private:
  12. struct Node{
  13. int data;
  14. Node *next;
  15. Node(const int &d) : data(d),next(NULL){ }
  16. };
  17. Node *head;
  18. Node *newhead;
  19. };
  20. //创建单链表头节点,head->data = 0;head->next = NULl
  21. void List::create_List(){
  22. head = new Node(0);
  23. }
  24. //头插法
  25. void List::insert_head(const int &d){
  26. for(int i = 0; i < d; i++){
  27. Node *p = new Node(i);
  28. p->next = head->next;
  29. head->next = p;
  30. }
  31. }
  32. //尾插法
  33. void List::insert_end(const int &d){
  34. Node *cur = head;
  35. for(int i = 0; i < d; i++){
  36. Node *p = new Node(i);
  37. cur->next = p;
  38. cur = p;
  39. }
  40. cur->next = NULL;
  41. }
  42. void List::print(){
  43. while(head->next){
  44. head = head->next;
  45. cout << head->data << " ";
  46. }
  47. cout << endl;
  48. }
  49. int main(){
  50. List list;
  51. list.insert_head(4);
  52. list.print();
  53. list.insert_end(4);
  54. list.print();
  55. return 0;
  56. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/543611
推荐阅读
相关标签
  

闽ICP备14008679号