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

c/c++单链表的基本操作

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

c/c++单链表的基本操作

单链表的基本操作
#include
//@lining
using namespace std;
typedef int Type;
//构建一个结点类
class Node
{
public:
	int data;
	Node* next;
};
//单链表类
class linkList
{
public:
	linkList();   //构造链表
	~linkList();  //析构销毁链表
	void CreatlinkList();//创建链表
	void PrintlinkList();//打印链表
	int GetlinkListLength();//获取链表长度
	bool IsEmpty();///判断链表是否为空
	void InsertHead(Type data);//头部插入
	void InsertRear(Type data);//尾部插入
	void InsertAppoint(Type data,int n);//指定位置插入
	void DeleteHead();//删除头结点
	void DeleteRear();//删除尾结点
	void DeleteAppoint(Type data);//删除指定结点
	void DeleteAll();//删除所有数据
	Node* Find(Type data);//查找结点
private:
	Node* head;//头结点
};
linkList::linkList()
{
	head = new Node;
	head->data = 0;
	head->next = NULL;
}
linkList::~linkList()
{
	delete head;
}
void linkList::CreatlinkList()
{
	//尾插法建立链表
	Node* pnew,*ptemp=head;
	cout << "请输入数据建立链表,输入数字1003作为建立链表的结束" << endl;
	//建立第一个新结点
	pnew = new Node;
	cin >> pnew->data;
	pnew->next = NULL;
	while (pnew->data != 1003)//输入1003停止建立链表
	{
		ptemp->next = pnew;//当前结点指向新节点
		ptemp = pnew;      //新结点成为新的当前结点
		pnew = new Node;
		cin >> pnew->data;
		pnew->next = NULL;
	}
}
void linkList::PrintlinkList()
{
	if (IsEmpty())
	{
		cout << "链表为空" << endl;
		return;
	}
	cout << "链表的打印结果为:" << endl;
	Node* p = head->next;
	while (p)
	{
		cout << p->data << " ";
		p = p->next;
	}
	cout << endl;
}
int linkList::GetlinkListLength()
{
	if (IsEmpty())
	{
		cout << "链表的长度为0" << endl;
	}
	Node* p = head;
	int count=0;
	while (p->next)
	{
		p = p->next;
		count++;
	}
	return count;
}
//判断链表是否为空
bool linkList::IsEmpty()
{
	if (!head||!head->next)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//在头部插入指定元素
void linkList::InsertHead(Type data)
{
	Node* newNode = new Node;
	newNode->data = data;
	if (!head)//若头结点为空
	{
		head = newNode;
	}
	newNode->next = head->next;
	head->next = newNode;
}
//在尾部插入指定元素
void linkList::InsertRear(Type data)
{
	Node* newNode = new Node;
	newNode->data = data;
	Node* p = head->next;
	if (!head)//若头结点为空
	{
		head = newNode;
	}
	else
	{
		while (p->next)
		{
			p = p->next;
		}
		p->next = newNode;
		newNode->next = NULL;
	}
}
//在指定位置插入指定元素
void linkList::InsertAppoint(Type data,int n)
{
	Node* newNode = new Node;
	newNode->data = data;
	if (n > GetlinkListLength())
	{
		cout << "指定位置超出链表范围" << endl;
	}
	else
	{
		int count = 1;
		Node* p = head;
		while (count < n)
		{
			p = p->next;
			count++;
		}
		newNode->next = p->next;
		p->next = newNode;
	}
}
//删除第一个结点
void linkList::DeleteHead()
{
	if (IsEmpty())
	{
		cout << "链表为空" << endl;
	}
	else
	{
		Node* p = head->next;
		head->next = p->next;
	}
}
//删除最后一个结点
void linkList::DeleteRear()
{
	if (IsEmpty())
	{
		cout << "链表为空" << endl;
	}
	else
	{
		Node* p = head;
		Node* ptemp = head;
		while (p->next)
		{
			ptemp = p;
			p = p->next;
		}
		ptemp->next = NULL;
	}
}
//删除指定结点
void linkList::DeleteAppoint(Type data)
{
	if (IsEmpty())
	{
		cout << "链表为空" << endl;
	}
	else
	{
		Node* p = head;
		Node* ptemp = head;
		while (p->data!=data)
		{
			ptemp = p;
			p = p->next;
		}
		ptemp->next = p->next;
	}
}
//删除所有结点
void linkList::DeleteAll()
{
	if (IsEmpty())
	{
		cout << "链表为空" << endl;
	}
	else
	{
		Node* p = head->next;
		Node* ptemp = p;
		while (p)
		{
			ptemp = p;
			p = p->next;
			head->next = p;//连接头结点
			delete ptemp;
		}
	}
}
//查找指定元素
Node* linkList::Find(Type data)
{
	Node* p = head;
	if (IsEmpty())
	{
		cout << "链表为空" << endl;
		return NULL;
	}
	int count=0;
	while (p->data != data && p->next)
	{
		p = p->next;
		count++;
	}
	cout << "查找元素在第"<data << endl;
		//p.DeleteAll();
		p.PrintlinkList();
		int n = 0;
		cout << "请输入要头插入的数据:" << endl;
		cin >> n;
		p.InsertHead(n);
		p.PrintlinkList();
		int m = 0;
		cout << "请输入要尾插入的数据:" << endl;
		cin >> m;
		p.InsertRear(m);
		p.PrintlinkList();
		int l = 100000;
		p.InsertAppoint(l, 2);
		p.PrintlinkList();
	}
	else
	{
		cout << "链表为空" << endl;
	}
}
int main()
{
	test();
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429327.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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