C 语言 链表使用
如果再更加灵活的创建数据结构,那么就要使用链表了,它是动态的进行内存存储分配的一种结构,假如一架飞机要飞向 A、B、C、D... 岛屿,路线不定,每座岛屿有名称(name),开始营业时间(opens)和打烊时间(closes),一个函数展示它要飞行的路线信息,一个岛屿指向另一个岛屿,就有点链条的味道了,所以我们声明的结构需要有个字段指向自身(递归结构),如下实例:
// 创建递归结构必须为此命名,typedef struct island 不可省略 typedef struct island{ char *name; char *opens; char *closes; struct island *next; // 保存一个指向下一个的指针 } island;
然后定义变量,一个个的连接它们,演示代码如下:
#include <stdio.h> #include <stdlib.h> // 创建递归结构必须为此命名,typedef struct island 不可省略 typedef struct island{ char *name; char *opens; char *closes; struct island *next; // 保存一个指向下一个的指针 } island; void display(island *start) { island *i = start; for (; i != NULL; i=i->next) { // i != NULL,表示需要一直循环下去直到当前 island 没有 next 值 // i = i->next. 表示循环结束后跳转到下一个 island printf("Name:%s\n open:%s-%s\n", i->name, i->opens, i->closes); } } int main(int argc, char *argv[]) { island A = {"A", "09:00", "21:00", NULL}; // NULL 全部大写,实际值为 0,专门用于将指针设为 0 island B = {"B", "08:00", "21:00", NULL}; island C = {"C", "10:00", "21:00", NULL}; island D = {"D", "09:00", "22:00", NULL}; // 连接 A.next = &B; B.next = &C; C.next = &D; // show display(&A); return 0; }
运行下,可以输出:
Name:A open:09:00-21:00 Name:B open:08:00-21:00 Name:C open:10:00-21:00 Name:D open:09:00-22:00
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: C 语言高级数据结构 之 枚举
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论