求,问一下该怎么写啊,有点没看懂,不知道该怎么插入,希望有人能帮忙解答一下
1条回答 默认 最新
- 嵌入式小企鹅 2024-09-24 16:44关注
#include <stdio.h> #define MAX_SIZE 9 // 定义节点结构体 typedef struct Node { int data; int next; } Node; // 定义包含头节点的链表结构体 typedef struct { Node nodes[MAX_SIZE]; // 节点数组 int avail; // 空闲节点链表头指针 int head; // 链表头指针 } StaticLinkedList; // 初始化链表 void initList(StaticLinkedList* list) { for (int i = 0; i < MAX_SIZE - 1; i++) { list->nodes[i].next = i + 1; } list->nodes[MAX_SIZE - 1].next = -1; list->avail = 0; // 初始时所有节点都是空闲的 list->head = -1; // 头指针初始化为-1,表示空链表 } // 打印链表 void printList(StaticLinkedList* list) { printf("当前链表状态: \n"); int current = list->head; while (current != -1) { printf("%d ", list->nodes[current].data); current = list->nodes[current].next; } printf("\n\n"); } // 插入新节点到链表头部 void insertToHead(StaticLinkedList* list, int value) { if (list->avail == -1) { printf("没有空闲节点,无法插入。\n"); return; } int newNode = list->avail; // 获取一个空闲节点 list->nodes[newNode].data = value; list->avail = list->nodes[newNode].next; // 移动空闲节点指针 list->nodes[newNode].next = list->head; // 新节点链接到链表头部 list->head = newNode; } // 删除节点 void deleteNode(StaticLinkedList* list, int value) { int prev = -1; int current = list->head; while (current != -1 && list->nodes[current].data != value) { prev = current; current = list->nodes[current].next; } if (current == -1) { printf("未找到值为 %d 的节点。\n", value); return; } if (prev == -1) { list->head = list->nodes[current].next; // 删除的是头节点 } else { list->nodes[prev].next = list->nodes[current].next; } list->nodes[current].next = list->avail; // 将删除的节点加入空闲链表 list->avail = current; } int main() { StaticLinkedList list; initList(&list); // 操作 (1) printf("操作 (1): 依次插入 18、56、95、27、44、32\n"); int insertValues1[] = {18, 56, 95, 27, 44, 32}; for (int i = 0; i < 6; i++) { insertToHead(&list, insertValues1[i]); } printList(&list); // 操作 (2) printf("操作 (2): 插入 31; 删除 18、44; 插入 87、66; 删除 95\n"); insertToHead(&list, 31); deleteNode(&list, 18); deleteNode(&list, 44); insertToHead(&list, 87); insertToHead(&list, 66); deleteNode(&list, 95); printList(&list); return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图
- ¥15 UE5.1局部变量对蓝图不可见
- ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
- ¥20 sentry如何捕获上传Android ndk 崩溃
- ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
- ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?