c语言静态链表代码实现
时间: 2024-09-13 20:01:37 浏览: 55
在C语言中,静态链表是一种简单的数据结构,其中节点数组在程序运行期间固定分配内存。与动态链表不同,静态链表的大小在编译时就已经确定,不适合频繁增删元素。下面是一个基本的静态单链表的实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构体
typedef struct StaticNode {
int data; // 节点数据
struct StaticNode* next; // 指向下一个节点的指针
} StaticListNode;
// 动态初始化一个静态链表
StaticListNode* createList(int size) {
StaticListNode* list = (StaticListNode*)malloc(size * sizeof(StaticListNode));
for (int i = 0; i < size; i++) {
list[i].data = 0;
list[i].next = &list[(i + 1) % size]; // 循环链接,最后一个节点指向第一个节点
}
list[size - 1].next = NULL;
return list;
}
// 插入节点到链表头部
void insertAtHead(StaticListNode** head, int value) {
StaticListNode* newNode = (StaticListNode*)malloc(sizeof(StaticListNode));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
// 打印链表
void printList(StaticListNode* head) {
while (head != NULL) {
printf("%d -> ", head->data);
head = head->next;
}
printf("NULL\n");
}
int main() {
int size = 5;
StaticListNode* list = createList(size);
// 插入一些值
insertAtHead(&list, 10);
insertAtHead(&list, 20);
// 打印链表
printList(list);
return 0;
}
```
阅读全文