一段简单的代码完成对学生名字和学号的汇总
typedef struct { char name[21]; int id; stu* next; }stu; int main() { int n = 4; stu* p, * head, * tail; p = (stu*)malloc(sizeof(stu)); head = p; tail = p; head->next = NULL; for (int i = 0; i < n; i++) { p = (stu*)malloc(sizeof(stu));//开辟动态空间 printf("name:"); scanf_s("%s", p->name); printf("id:"); scanf_s("%d", p->id); tail->next = p;//使当前位置的next指向下一个空间 tail = p;//使尾巴指向下一个空间 tail->next = NULL;//结尾 } return 0; }
1.定义一个结构体,在其中定义一个结构体指针next
2.单链表的运行详细分析
1)用p开辟一个动态空间,在每次输入数据后,使头指针和尾指针都指向当前的空间
2) tail->next = p; 使当前位置的next指向目前的新空间,使之成为第一个结点,以此类推,将多个节点连接起来
3)tail = p;使尾指针指向目前的新空间
4)tail->next = NULL;将尾指针中的next置为空指针,使的这个tail为尾结点