2024年6月2日
#include <stdio.h>
#include <stdlib.h> // 定义链表节点结构体
typedef struct Node { int data; struct Node* next;
} Node; // 尾插函数
void append(Node** head_ref, int new_data) { // 1. 分配新节点,并设置其数据 Node* new_node = (Node*)malloc(sizeof(Node)); new_node->data = new_data; new_node->next = NULL; // 2. 如果链表为空,则新节点是头节点 if (*head_ref == NULL) { *head_ref = new_node; return; } // 3. 否则,找到尾节点 Node* last = *head_ref; while (last->next != NULL) { last = last->next; } // 4. 更改尾节点的next,使其指向新节点 last->next = new_node; return;
} // ... 其他链表操作函数和主函数(main) ...
尾插法是上面的
下面是头插法
#include <stdio.h>
#include <stdlib.h> typedef struct Node { int data; struct Node* next;
} Node; void prepend(Node** head_ref, int new_data) { Node* new_node = (Node*)malloc(sizeof(Node)); new_node->data = new_data; new_node->next = NULL; if (*head_ref == NULL) { *head_ref = new_node; return; } new_node->next = *head_ref; *head_ref = new_node; return;
}
只用知道上传代码即可