
1.链表是一种非连续的存储结构(相对于数组)
2.链表是由一系列的结点组成,每个结点包括两个部分:数据和指针。
3.链表通过节点中的指针来确定逻辑顺序

正序
#include <iostream>
#include <string>
using namespace std;
//创建结点
struct node
{
int data = 0;
node* next = NULL;
};
int main()
{
//声明创建head指针指向首结点
node* head = new node;//创建了首结点
if (head == NULL)
{
cout << "head分配内存失败,程序已退出!" << endl;
return 0;
}
head->data = 0;//初始化首结点数据
head->next = NULL;
//声明tail尾结点指针
node* tail = NULL;
tail = head;
//声明变量N,用于接受链表长度数据
int N = 0;
cout << "请输入链表长度:";
cin >> N;
//建立循环,构建链表结构,首结点已建立好了
for (int i = 0; i < N; i++)
{
//声明创建temp指针指向临时结点
node* temp = new node;
if (temp == NULL)
{
cout << "temp分配内存失败,程序已退出!" << endl;
return 0;
}
int num = 0;
cout << "请输入数据:" << endl;;
cin >> num;
temp->data = num;
temp->next = NULL;
tail->next = temp;
tail = temp;
}
//遍历链表
node* curNode = head->next;
cout << "链表内存储的数据如下:" << endl;
while (curNode)
{
cout << curNode->data << " ";
curNode = curNode->next;
}
node* p = NULL, * q = NULL;
p = head;
while (p)
{
q = p->next;
delete p;
p = q;
}
return 0;
}逆序
#include <iostream>
#include <string>
using namespace std;
//创建结点
struct node
{
int data = 0;
node* next = NULL;
};
int main()
{
//声明创建head指针指向首结点
node* head = new node;//创建了首结点
if (head == NULL)
{
cout << "head分配内存失败,程序退出!" << endl;
return 0;
}
head->data = 0;//初始化首结点数据
head->next = NULL;
//声明变量N,用于接受链表长度数据
int N = 0;
cout << "请输入链表长度:";
cin >> N;
//建立循环,构建链表结构,首结点已建立好了
node* trueHead = NULL;
for (int i = 0; i < N; i++)
{
//声明创建temp指针指向临时结点
node* temp = new node;
if (temp == NULL)
{
cout << "temp分配内存失败,程序退出!" << endl;
return 0;
}
int num = 0;
cout << "请输入数据:" << endl;;
cin >> num;
temp->data = num;
temp->next = head;
head = temp;
trueHead = temp;
}
//遍历链表
node* curNode = trueHead;
cout << "链表内存储的数据如下:" << endl;
while (curNode)
{
cout << curNode->data << " ";
curNode = curNode->next;
}
node* p = NULL, * q = NULL;
p = trueHead;
while (p)
{
q = p->next;
delete p;
p = q;
}
return 0;
}版权声明:本文为weixin_62804142原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。