设计算法,将2,1,0,6,8,21,11,28,210,611这些数据采用前插法创建带头节点的单链表
时间: 2023-09-11 07:09:27 浏览: 25
好的,我来为您设计算法。
首先,我们需要创建一个带头节点的单链表,头节点不存储数据,只是用来标识链表的起始位置。
其次,我们需要遍历给定的数据,依次将每个数据插入到链表的头部。
具体的实现步骤如下:
1. 定义一个结构体表示链表节点,包含一个数据域和一个指向下一个节点的指针。
```
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
```
2. 创建一个带头节点的链表,并将头节点的指针指向 NULL。
```
ListNode *head = new ListNode(0);
head->next = NULL;
```
3. 遍历给定的数据,依次将每个数据插入到链表的头部。
```
for (int i = 0; i < n; i++) {
int val = data[i];
ListNode *node = new ListNode(val);
node->next = head->next;
head->next = node;
}
```
其中,n 表示给定数据的个数,data 是一个数组,存储了给定的数据。
4. 最后返回链表的头节点即可。
完整的代码实现如下:
```
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* createList(int data[], int n) {
ListNode *head = new ListNode(0);
head->next = NULL;
for (int i = 0; i < n; i++) {
int val = data[i];
ListNode *node = new ListNode(val);
node->next = head->next;
head->next = node;
}
return head;
}
```
调用 createList 函数即可创建一个带头节点的单链表。