在C++中实现链表可以通过定义一个链表节点的结构体来实现。每个节点包含一个数据元素和一个指向下一个节点的指针。
以下是一个简单的链表节点结构体的定义:
struct ListNode {
int val; // 数据元素
ListNode* next; // 指向下一个节点的指针
};
要创建一个链表,可以使用指针来跟踪链表的头节点。头节点是链表的起始点,通过它可以访问整个链表。
以下是一个创建链表的示例代码:
ListNode* createLinkedList(vector<int>& values) {
ListNode* head = nullptr; // 头节点指针
ListNode* tail = nullptr; // 尾节点指针
for (int val : values) {
ListNode* newNode = new ListNode(); // 创建新节点
newNode->val = val; // 设置节点的值
newNode->next = nullptr; // 初始化节点的下一个指针
if (head == nullptr) {
head = newNode; // 如果是第一个节点,将其设置为头节点
} else {
tail->next = newNode; // 否则将新节点连接到尾节点的后面
}
tail = newNode; // 更新尾节点为新节点
}
return head; // 返回头节点
}
在链表中,每个节点的数据元素可以是整数或者链表本身。这意味着链表可以实现嵌套结构,其中一个节点的指针指向另一个链表。
以下是一个示例代码,展示了如何在链表中嵌套另一个链表:
ListNode* nestedLinkedList() {
ListNode* head = new ListNode(); // 外层链表的头节点
head->val = 1;
ListNode* innerHead = new ListNode(); // 内层链表的头节点
innerHead->val = 2;
head->next = innerHead; // 外层链表的下一个节点指向内层链表
return head;
}
这样,我们就可以在C++中实现链表,并且链表的元素可以是整数或者链表本身。
领取专属 10元无门槛券
手把手带您无忧上云