数据结构:链表
链表理解
把一个个节点串联起来的结构,这些节点的存储位置不需要连续,也不需要提前定义长度。
每个节点node包含两个元素:
1.当前节点的值value;
2.指向下一个节点的指针node *next。
图片解释
上代码(插入和删除某一节点)
插入
删除
#include<iostream>
using namespace std;
class node
{
public:
int value;
node *next;
node()
{
value = 0;
next = NULL;
}
};
int main()
{
node *head = NULL, *curr = NULL, *insert = NULL, *pre = NULL, *next = NULL;
head = new node();
head->value = 15;
head->next = NULL;
for (int i = 0; i < 10; i ++)
{
curr = new node();
curr->value = i;
curr->next = head;
head = curr;
}
curr = head;
cout<<"原始数据:" <<endl;
while(curr != NULL)
{
cout<<curr->value<<' ';
curr = curr->next;
}
cout<<endl;
//插入操作
curr = head;
while(curr->value != 5)
{
curr = curr->next;
}//找到值为5的节点
next = curr->next;
insert = new node();
insert->value = 20;
curr->next = insert;
insert->next = next;
curr = head;//回归到头节点
cout<<"删除前:"<<endl;
while(curr != NULL)
{
cout<<curr->value<<' ';
curr = curr->next;
}
cout<<endl;
//删除操作
curr = head;
while(curr->value != 20)
{
pre = curr;
curr = curr->next;
}//找到待删除节点
next = curr->next;
pre->next = next;
delete curr;
curr = head;
cout<<"删除后:"<<endl;
while(curr != NULL)
{
cout<<curr->value<<' ';
curr = curr->next;
}
}
输出结果