C 语言 链表使用

发布于 2024-05-01 02:30:07 字数 1522 浏览 19 评论 0

如果再更加灵活的创建数据结构,那么就要使用链表了,它是动态的进行内存存储分配的一种结构,假如一架飞机要飞向 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

离去的眼神

暂无简介

0 文章
0 评论
492 人气
更多

推荐作者

ni139999

文章 0 评论 0

Smile

文章 0 评论 0

木子李

文章 0 评论 0

仅此而已

文章 0 评论 0

qq_2gSKZM

文章 0 评论 0

内心激荡

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文