- 创建链表
链表是用于存储数据的一种数据结构,它由一个一个的结点连接组成,链表头是指向头结点的指针,链表尾是空指针nullptr。每个结点分为两个部分,一个部分用于存储数据,一个部分用于存储指向下一个链表的指针,下面是创建链表的几种方式
- 不使用构造函数,创建一个包含两个结点的链表:
#include <iostream>
using namespace std;
//不用构造函数创建链表
struct ListNode{
double value;
ListNode* next;
};
int main() {
ListNode* head = new ListNode;
ListNode* secondPtr = new ListNode;
head->value = 12.5;
head->next = secondPtr;
secondPtr->value = 13.5;
secondPtr->next = nullptr;
cout<<head->value<<endl;
cout<<secondPtr->value<<endl;
return 0;
}
- 使用构造函数创建链表
#include <iostream>
using namespace std;
//用构造函数创建链表
struct ListNode{
double value;
ListNode* next;
ListNode(double val,ListNode* ptr=nullptr):value(val),next(ptr){}//next指针默认值为nullptr
};
int main() {
ListNode* head = new ListNode(13.5);
head = new ListNode(12.5,head);//该语句将从右到左评估,首先在构造函数中使用 head 的旧值,然后从 new 运算符返回的地址将被分配给 head,成为它的新值
head = new ListNode(11.5,head);
cout<<head->value<<endl;
return 0;
}
#include <iostream>
using namespace std;
//遍历链表
struct ListNode{
double value;
ListNode* next;
ListNode(double value,ListNode* next=nullptr):value(value),next(next){cout<<"构造了一个链表结点!"<<endl;}
};
int main() {
ListNode* numberList = new ListNode(12.5);
for(int i = 0;i<5;i++){
numberList = new ListNode(i*6.5,numberList);
}
ListNode* ptr = numberList;
//开始遍历链表并打印值
while(ptr != nullptr){
cout<<ptr->value<<" ";
ptr = ptr->next;
}
return 0;
}