学习
错题
模考
我的
登录/注册/忘记密码
学习 / 结构体 / 链表的概念
链表的概念
结点串起来;先认形状,不讲增删
1. 用指针把结点串起来
数组是一排连着的座位,**长度事先写死**,中间插一个要挪后面所有人。有时更想要:结点一个接一个,用指针串起来——这就是**链表**。 画成形状: `[1 | next] → [2 | next] → [3 | NULL]` 每一节是一个结构体:**一份数据**,再加一个**指向下一节的指针**。最后一节谁也不指,写成 `NULL`,当作走到头。 和数组比,先记两句就够: - 数组:下标能直接跳到第 i 个;个数在定义时就定了 - 链表:只能顺着 `next` 一节节走;真正用时结点个数可以临时再要(常见是 `malloc`,本课不展开) 本课只**引出这个形状**。插入、删除、反转、带头结点,都不讲。先会认:数据 + `next`,末尾 `NULL`。
2. 顺着 next 走,碰到 NULL 停
结点类型自己里面有一个指向**同类型**的指针,这叫自引用。标签要派上用场: ```c struct Node { int data; struct Node *next; }; struct Node a, b, c; struct Node *p; a.data = 1; b.data = 2; c.data = 3; a.next = &b; b.next = &c; c.next = NULL; p = &a; while (p != NULL) { printf("%d ", p->data); p = p->next; /* 走到下一节 */ } ``` 这里用三个普通变量串起来,只为看清箭头。输出是 `1 2 3`。 - 类型还没写完,里面只能写 `struct Node *next`,不要急着写 `Node *next` - `p = p->next` 让指针移到下一结点;碰到 `NULL` 就停 - 真正长度不固定时,会用 `malloc` 一块块要内存。认完形状即可,不必会申请和释放 先会看图、会顺着走。会写增删再算数据结构课的事。
开始练习
返回结构体
登录
注册
忘记密码
点击此处输入用户名
点击此处输入密码
登录
点击此处输入用户名
点击此处输入密码
点击此处输入邮箱
发送验证码
点击此处输入验证码
点击此处输入邮箱
发送验证码
点击此处输入验证码
点击此处输入新密码