链表的创建(c++中链表的创建)
简介:
链表是一种数据结构,它由一系列节点组成,每个节点包含两个部分,一个是数据域,一个是指针域。指针域指向下一个节点,这使得链表可以动态地添加或删除节点。
多级标题:
1. 单向链表的创建
2. 双向链表的创建
3. 循环链表的创建
内容详细说明:
1. 单向链表的创建
单向链表的创建需要先创建一个头节点,在头节点之后插入其他节点。一个节点包含两部分:数据域和指针域。指针域指向下一个节点,最后一个节点指向null。
代码实现:
```
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* createLinkedList(vector
ListNode *dummyHead = new ListNode(0);
ListNode *cur = dummyHead;
for (int num : nums) {
cur->next = new ListNode(num);
cur = cur->next;
}
return dummyHead->next;
```
2. 双向链表的创建
双向链表与单向链表相似,不同之处在于一个节点有两个指针,一个指向前一个节点,一个指向后一个节点。
代码实现:
```
struct ListNode {
int val;
ListNode *prev;
ListNode *next;
ListNode(int x) : val(x), prev(NULL), next(NULL) {}
};
ListNode* createDoublyLinkedList(vector
ListNode *dummyHead = new ListNode(0);
ListNode *cur = dummyHead;
for (int num : nums) {
cur->next = new ListNode(num);
cur->next->prev = cur;
cur = cur->next;
}
return dummyHead->next;
```
3. 循环链表的创建
循环链表与单向链表相似,不同之处在于最后一个节点的指针域不是null,而是指向第一个节点。循环链表可以根据具体情况选择单向或双向。
代码实现:
```
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* createCircularLinkedList(vector
if (nums.empty()) {
return NULL;
}
ListNode *head = new ListNode(nums[0]);
ListNode *cur = head;
for (int i = 1; i < nums.size(); i++) {
cur->next = new ListNode(nums[i]);
cur = cur->next;
}
cur->next = head;
return head;
```