你好

简单实现单链表

结构

  

 

头节点:便于操作链表,数据域不存放东西,指针指向首节点。

首节点:第一个存放有效数据的节点。

尾节点:最后一个.....

头指针:指向头节点的指针变量

尾指针:指向尾节点的指针变量

  通过头指针可以唯一确定一个链表,能够得到链表的所有元素。头指针存放头节点的地址(head_ptr=head)。通过  ‘->’  可以取出头节点中的元素,如指向下一个节点的指针。再通过->又可以取出下一个节点的元素。

 分类

单链表

双链表:有两个指针,一个指着前节点,一个后节点。

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 typedef struct Node
 5 {
 6     int e;
 7     struct Node* next;
 8 }Node, *Linklist;
 9 //Linklist 一个节点的指针
10 void initlist(Linklist &head)
11 {
12     int n;
13     Linklist head_ptr,tail_ptr,temp;
14     head = (Linklist)malloc(sizeof(Node));
15     head->next = nullptr;
16     head_ptr = head;
17     tail_ptr = head;
18     cout << "输入需要节点个数:";
19     cin >> n;
20     for (int i = 0; i < n; i++)
21     {
22         temp= (Linklist)malloc(sizeof(Node));    
23         temp->next = nullptr;
24         tail_ptr->next= temp ;
25         cout << "第" << i + 1 << "个节点:";
26         cin >> temp->e;
27         tail_ptr=tail_ptr->next  ;
28     }
29 
30 }
31 
32 void show(Linklist list)
33 {
34     Linklist p = list;
35     p = p->next;
36     while (p != nullptr)
37     {
38         cout << p->e << endl;
39         p = p->next;
40     }
41 }
42 
43 void remove(Linklist list)
44 {    
45     int n;
46     printf("输入需要删除的节点:");
47     cin >> n;
48     Linklist p=list;
49     while (p->next->e != n)
50     {
51         p = p->next;
52     }
53     Linklist t = p->next;
54     p->next = p->next->next;
55     free(t);
56     printf("删除结果:\n");
57     show(list);
58 
59 }
60 
61 void insert(Linklist& list) {
62     int n,i=0;
63     Linklist t = (Linklist)malloc(sizeof(Node));
64     Linklist p = list;
65     printf("输入插入的节点元素:");
66     cin >> t->e ;
67     printf("输入插入的位置:");
68     cin >> n;
69     p = p->next;
70     while (1)
71     {    
72         if (i == n - 1)
73         {
74             break;
75         }
76         p = p->next;
77         i++;
78     }
79     t->next = p->next;
80     p->next = t;
81     printf("插入结果:\n");
82     show(list);
83     
84 
85 }
86 
87 int main()
88 {
89     Linklist list;
90     initlist(list);
91     show(list);
92     remove(list);
93     insert(list);
94     return 0;
95 }

 

posted @ 2020-10-06 13:14  S_nA_tCH!  阅读(96)  评论(0)    收藏  举报