栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++链表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++链表

#pragma once
#include 
using namespace std;

typedef int DataType;
class DataNode
{
public:
	DataType data;
	DataNode* next;
};

class Datalink
{
private:
	DataNode* head;
	int linksize;
public:
	Datalink();
	virtual ~Datalink() { delete head; }
	DataNode* CreateNode();
	//增
	void AddNodeTolinkAtHead(DataNode* newnode);
	void AddNodeTolinkAtBack(DataNode* newnode);
	//删
	void DelNode(DataType data);
	//改
	void ModNode(DataType data,DataType newdata);
	//查
	int FindData(DataType data);
	//反转
	void Revlink();
	//连接
	void Con2link(Datalink* newNode);
	//看
	void Showlink();
};


#include "Datalink.h"

Datalink::Datalink()
{
	head = new DataNode;
	head->data = 0;
	head->next = NULL;
	linksize = 0;
}

DataNode* Datalink::CreateNode()
{
	DataNode* node = new DataNode;
	cout << "请输入节点的值:";
	cin >> node->data;
	node->next = NULL;
	return node;
}

void Datalink::AddNodeTolinkAtHead(DataNode* newnode)
{
	if (linksize == 0)
	{
		head = newnode;
		linksize++;
		return;
	}
	newnode->next = head;
	head = newnode;
	linksize++;
}

void Datalink::AddNodeTolinkAtBack(DataNode* newnode)
{
	if (linksize == 0)
	{
		head = newnode;
		linksize++;
		return;
	}
	DataNode* pNode = head;
	while (pNode->next != NULL)
		pNode = pNode->next;
	pNode->next = newnode;
	linksize++;
}

void Datalink::DelNode(DataType data)
{
	DataNode* pnode = head;
	int cursize = linksize;
	for (int i = 0; i < cursize; i++)
	{
		if (pnode->next == NULL)
			return;
		if (pnode->next->data == data)
		{
			pnode->next = pnode->next->next;
			linksize--;
		}
		else
			pnode = pnode->next;
	}
}

void Datalink::ModNode(DataType data, DataType newdata)
{
	DataNode* pnode = head;
	for (int i = 0; i < linksize; i++)
	{
		if (pnode->data == data)
			pnode->data = newdata;
		pnode = pnode->next;
	}
}

int Datalink::FindData(DataType data)
{
	DataNode* pnode = head;
	int cnt = 0;
	for (int i = 0; i < linksize; i++)
	{
		if (pnode->data == data)
			cnt++;
		pnode = pnode->next;
	}
	return cnt;
}

void Datalink::Revlink()
{
	DataNode* nextNode = NULL;
	DataNode* curNode = head;
	DataNode* preNode = NULL;
	for (int i = 0; i < linksize; i++)
	{
		nextNode = curNode->next;
		curNode->next = preNode;
		preNode = curNode;
		curNode = nextNode;
	}
	head = preNode;
}

void Datalink::Con2link(Datalink* newhead)
{
	DataNode* pNode = head;
	while (pNode->next)
		pNode = pNode->next;
	pNode->next = newhead->head;
	linksize += newhead->linksize;
}

void Datalink::Showlink()
{
	DataNode* pNode = head;
	for (int i = 0; i < linksize; i++)
	{
		cout << "节点->" << i;
		cout << "->值->" << pNode->data << endl;
		pNode = pNode->next;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/629291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号