创建一个空链表并用头插法插入1,1,1三个数据(用c语言)
时间: 2024-09-24 18:31:17 浏览: 44
test3-插入.rar_尾插法_有头插法_链表 插入创建
在C语言中,要创建一个空链表并使用头插法插入元素,可以按照以下步骤操作:
1. 定义链表结构(如果尚未定义):
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
2. 创建一个头结点(因为头插法是从头部开始插入):
```c
Node* head = NULL;
```
3. 分配内存并初始化头插法插入:
```c
Status ListInsert(Node** p, int i, int e) { // 注意指针传递
if (*p == NULL) { // 判断链表是否为空
*p = (Node*)malloc(sizeof(Node)); // 分配空间
if (*p == NULL) {
printf("Memory allocation failed.\n"); // 处理内存分配失败
return ERROR;
}
(*p)->data = e; // 设置新节点数据
(*p)->next = NULL; // 初始化新节点的下一个指针为NULL
} else {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return ERROR;
}
newNode->data = e; // 设置新节点数据
newNode->next = *p; // 将新节点的next指向前一个节点
*p = newNode; // 更新头节点为新节点
}
// 循环i次插入相同数据
for (int j = 0; j < i - 1; j++) {
Node* current = *p;
*p = current->next;
*p = (Node*)malloc(sizeof(Node));
if (*p == NULL) {
printf("Memory allocation failed.\n");
return ERROR;
}
(*p)->data = e;
(*p)->next = NULL;
}
return OK;
}
// 使用函数创建链表并插入元素
int main() {
Status status = ListInsert(&head, 2, 1); // 插入位置为2,数据为1
if (status != OK) {
return 1; // 处理错误情况
}
status = ListInsert(&head, 1, 1); // 插入位置为1,数据为1
if (status != OK) {
return 1;
}
status = ListInsert(&head, 0, 1); // 插入位置为0,数据为1
// 打印链表(仅用于演示)
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
return 0;
}
```
注意:上述代码示例假设`Status`是自定义的一个枚举类型,用来表示操作成功或失败。实际项目中可能需要根据具体需求进行调整。
阅读全文