如何实现c语言静态链表

   2024-09-30 3010
核心提示:在C语言中,静态链表是一种使用数组来存储链表节点的数据结构。这种方法不需要动态分配内存,因此避免了内存泄漏和内存碎片的问

在C语言中,静态链表是一种使用数组来存储链表节点的数据结构。这种方法不需要动态分配内存,因此避免了内存泄漏和内存碎片的问题。下面是一个简单的静态链表实现:

首先,定义一个结构体来表示链表节点:
#include<stdio.h>#include <stdbool.h>typedef struct Node {    int data;    int next;} Node;
定义一个数组来存储链表节点,并初始化一个空链表:
#define MAX_NODES 100Node nodes[MAX_NODES];int head = -1;
实现链表操作函数,例如插入、删除和查找节点:
// 初始化链表void initList() {    for (int i = 0; i < MAX_NODES; i++) {        nodes[i].next = i + 1;    }    nodes[MAX_NODES - 1].next = -1;    head = -1;}// 插入节点到链表头部bool insertAtHead(int data) {    if (nodes[0].next == -1) {        return false; // 链表已满    }    int newNodeIndex = nodes[0].next;    nodes[newNodeIndex].data = data;    nodes[newNodeIndex].next = head;    head = newNodeIndex;    return true;}// 删除节点bool deleteNode(int data) {    int current = head;    int previous = -1;    while (current != -1) {        if (nodes[current].data == data) {            if (previous == -1) {                head = nodes[current].next;            } else {                nodes[previous].next = nodes[current].next;            }            nodes[current].next = nodes[0].next;            nodes[0].next = current;            return true;        }        previous = current;        current = nodes[current].next;    }    return false; // 未找到节点}// 查找节点bool findNode(int data) {    int current = head;    while (current != -1) {        if (nodes[current].data == data) {            return true;        }        current = nodes[current].next;    }    return false; // 未找到节点}
测试静态链表实现:
int main() {    initList();    insertAtHead(1);    insertAtHead(2);    insertAtHead(3);    printf("Find node with data 2: %s\n", findNode(2) ? "true" : "false");    deleteNode(2);    printf("Find node with data 2 after deletion: %s\n", findNode(2) ? "true" : "false");    return 0;}

这个简单的静态链表实现包括初始化、插入、删除和查找节点的功能。你可以根据需要扩展这个实现,例如添加更多的链表操作或者优化内存管理。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号