C++之链表

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版权协议,转载请附上原文出处链接和本声明。