C++ 单向链表

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 //目的:创建一个链表,存储学生的信息(姓名和学号)
 6 //所以其节点数据为:姓名和学号
 7 //用结构体数据类型表示数据
 8 typedef struct node
 9 {
10     char name[10];
11     int number;
12     struct node *next;  //指针域
13 }Student; //为便于书写,将struct node数据类型定义为Student数据类型
14 
15 //创建链表,访问列表时需要头节点的地址,所以需要一个返回值,返回头节点的地址,====这个“*”,好好理解一下
16 Student * creatLB(int n)
17 {
18     Student *head = new Student;//创建头节点,头节点一般不含数据
19     Student *pre = head;  //创建指针变量pre,用于指存储“上一个”节点地址
20     for (int i = 0; i < n; i++)
21     {
22         cout << "请输入第" << i + 1 << "个学生的姓名和学号" << endl;
23         Student *p = new Student; //动态申请Student数据类型的内存
24         cin >> p-> name;
25         cin >> p-> number;
26 
27         pre->next = p; //将上一个节点指针 指向 当前的节点地址
28         pre = p;       //将当前节点的地址 给 pre指针,用于准备指向下一个节点地址
29         p->next = NULL;
30     }
31     return head;
32 }
33 
34 //创建display函数,用于访问链表并显示
35 void display(Student *head, int n) //要访问链表,需要知道头节点的地址,然后依次访问,所以参数为头节点
36 {
37     Student *p = head->next;  //head头节点无数据,将第一个节点的地址给p
38     for (int i = 0; i < n; i++)
39     {
40         cout << "" << i + 1 << "个学生的姓名是" << p->name << '\t' <<
41             "" << i + 1 << "个学生的学号是" << p->number << endl;
42         p = p->next; //第一遍循环之后,将下一个节点的地址给p,输出下一个节点的数据
43     }
44 }
45 
46 int main()
47 {
48     int n = 3;    //存放三个学生的信息
49     Student * addr = creatLB(n);   //创建链表,并返回头节点地址,用变量名addr来存储
50     display(addr, n);    //传入参数:头节点地址,用于访问链表并显示
51     int t;
52     cin >> t;
53     return 0;
54 }

 

posted @ 2020-07-02 20:37  ZyLin-ux  阅读(205)  评论(0编辑  收藏  举报