在C语言中,静态链表是一种使用数组来存储链表节点的数据结构。这种方法不需要动态分配内存,因此避免了内存泄漏和内存碎片的问题。下面是一个简单的静态链表实现:
- 首先,定义一个结构体来表示链表节点:
#include#include typedef struct Node { int data; int next; } Node;
- 定义一个数组来存储链表节点,并初始化一个空链表:
#define MAX_NODES 100 Node 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 = https://www.yisu.com/ask/data;"hljs">int data) { int current = head; int previous = -1; while (current != -1) { if (nodes[current].data =https://www.yisu.com/ask/= data) {"hljs">int data) { int current = head; while (current != -1) { if (nodes[current].data =https://www.yisu.com/ask/= data) {>
- 测试静态链表实现:
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; }这个简单的静态链表实现包括初始化、插入、删除和查找节点的功能。你可以根据需要扩展这个实现,例如添加更多的链表操作或者优化内存管理。