采用前插法创建带头节点的单链表
时间: 2023-08-20 16:06:07 浏览: 70
好的,我来为您讲解一下采用前插法创建带头节点的单链表的过程。
首先,我们需要定义一个链表节点的结构体,包含一个数据域和一个指向下一个节点的指针域,代码如下:
```
typedef struct ListNode {
int data;
struct ListNode *next;
} ListNode, *LinkedList;
```
其中,ListNode表示链表节点的类型,LinkedList表示链表的类型,这里采用了指针的方式定义。
接下来,我们可以开始创建带头节点的单链表了。具体步骤如下:
1. 创建头节点,并将头节点的指针域置为NULL。
```
LinkedList CreateLinkedList() {
LinkedList L = (LinkedList) malloc(sizeof(ListNode));
L->next = NULL;
return L;
}
```
2. 循环读入数据,创建新节点,并将新节点插入到链表的头部。
```
void InsertLinkedList(LinkedList L, int x) {
ListNode *p = (ListNode *) malloc(sizeof(ListNode));
p->data = x;
p->next = L->next;
L->next = p;
}
```
3. 返回创建好的带头节点的单链表。
完整代码如下:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int data;
struct ListNode *next;
} ListNode, *LinkedList;
LinkedList CreateLinkedList() {
LinkedList L = (LinkedList) malloc(sizeof(ListNode));
L->next = NULL;
return L;
}
void InsertLinkedList(LinkedList L, int x) {
ListNode *p = (ListNode *) malloc(sizeof(ListNode));
p->data = x;
p->next = L->next;
L->next = p;
}
int main() {
LinkedList L = CreateLinkedList();
int x;
printf("请输入数据(以-1结束):");
scanf("%d", &x);
while (x != -1) {
InsertLinkedList(L, x);
scanf("%d", &x);
}
printf("链表创建成功!\n");
return 0;
}
```
这里我们采用了循环读入数据的方式创建链表,读入-1表示结束,可以根据实际情况进行修改。
阅读全文