首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用C实现一个没有malloc的简单链表

简单链表是一种常见的数据结构,用于存储一系列元素,并通过指针将它们连接起来。在C语言中,我们可以通过动态内存分配函数malloc来创建链表节点,但是本题要求实现一个没有malloc的简单链表。

在没有malloc的情况下,我们可以使用静态数组来模拟链表节点的存储。下面是一个用C语言实现的没有malloc的简单链表的示例代码:

代码语言:txt
复制
#include <stdio.h>

#define MAX_SIZE 100

typedef struct Node {
    int data;
    int next;
} Node;

Node list[MAX_SIZE];
int head = -1;  // 头节点的索引

// 初始化链表
void initList() {
    for (int i = 0; i < MAX_SIZE; i++) {
        list[i].next = -1;
    }
}

// 在链表末尾插入节点
void insert(int data) {
    int newNodeIndex = -1;
    for (int i = 0; i < MAX_SIZE; i++) {
        if (list[i].next == -1) {
            newNodeIndex = i;
            break;
        }
    }
    if (newNodeIndex == -1) {
        printf("链表已满,无法插入新节点\n");
        return;
    }
    list[newNodeIndex].data = data;
    list[newNodeIndex].next = -1;

    if (head == -1) {
        head = newNodeIndex;
    } else {
        int curIndex = head;
        while (list[curIndex].next != -1) {
            curIndex = list[curIndex].next;
        }
        list[curIndex].next = newNodeIndex;
    }
}

// 打印链表
void printList() {
    int curIndex = head;
    while (curIndex != -1) {
        printf("%d ", list[curIndex].data);
        curIndex = list[curIndex].next;
    }
    printf("\n");
}

int main() {
    initList();

    insert(1);
    insert(2);
    insert(3);

    printList();

    return 0;
}

在上述代码中,我们使用了一个静态数组list来存储链表节点,每个节点包含一个data字段用于存储数据,一个next字段用于指向下一个节点的索引。通过维护一个head变量来记录链表的头节点索引。

insert函数中,我们首先找到一个空闲的数组元素作为新节点的索引,然后将数据存入新节点,并将新节点插入到链表的末尾。

最后,通过printList函数可以打印出链表中的所有元素。

这是一个简单的没有使用malloc的链表实现,适用于存储较小规模的数据。如果需要存储大量数据或者动态增删节点,建议使用动态内存分配函数malloc来实现链表。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

13分9秒

25.基于Redis实现一个简单的分布式锁

1分35秒

C语言 | 建立链表,输出各结点中的数据

1分43秒

C语言 | 用指向元素的指针变量输出二维数组元素的值

1分20秒

C语言 | 温度转换

1分39秒

C语言 | 用同一表格输出若干人的数据

6分12秒

C语言图形化编程

25.5K
1分46秒

C语言 | 统计选票结果的程序

1分58秒

C语言 | 把学生信息放在一个结构体变量中

1分18秒

C语言 | 判断是否为素数

1分22秒

C语言 | 输入一个数,输出相应result

1分11秒

C语言 | 将一个二维数组行列元素互换

1分43秒

C语言 | 计算总平均分及第n个人的成绩

领券