●它是动态地进行内存分配的一种结构。链表和数组比较,不用事先确定存储空间,而是根据需要开辟内存单元。
●链表分为数据域、指针域
数据域: 存储数据。例如一个人的信息:姓名 年龄 班级
指针域: 是一个指针变量,存储下一个节点的地址,使本来不连续的空间通过该指针链接到一起。
创建链表
#include<iostream>
#include<vector>
using namespace std;
struct Node
{
//数据域
int val;
//指针域
Node* next;
Node(int val)//构造函数
{
this->val = val;
next = nullptr;
}
};
/*
创建链表,返回值是链表的头结点
*/
Node* CreatList(vector<int> &vec)
{
Node* HEAD = new Node(vec[0]);//创建链表的头结点
Node* TAIL = HEAD;//链表的尾结点
for (int i = 1; i < vec.size(); i++)
{
Node* node = new Node(vec[i]);//在堆区创建链表中的结点
TAIL->next = node;//12拼上了 在链表尾结点后面加上新的结点
TAIL = TAIL->next;
}
return HEAD;
}
int main()
{
vector<int> vec = {1,2,3,4,5};
Node* HEAD = CreatList(vec);
Node* p = HEAD;
//利用while循环遍历链表
while (p)
{
cout << p->val << " ";//12345
p = p->next;
}
}