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

链表(c++版本)

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

链表(c++版本)

前言

由于自己已经转到c++了,所以想要用c++实现数据结构,具体大概包括链表,栈,队列,图,树,查找等方面的内容,并尽力去造个轮子

代码
#include
#include
using namespace std;
//数据结构
struct ListNode {//链节点
	int val;
	ListNode* next;
	ListNode() :val(0), next(nullptr) {};
	ListNode(int x) :val(x), next(nullptr) {};
	ListNode(int x, ListNode* next) :val(x), next(next) {};
};
ListNode* head = new ListNode(-1);//头节点
bool deleteNode(int val) {//链表的删除
	ListNode* pre = head;
	ListNode* curr = head->next;
	while (curr) {
		if (curr->val == val) {
			ListNode* temp = curr;
			pre->next = curr->next;
			delete temp;
			return true;
		}
		pre = pre->next;
		curr = curr->next;
	}
	return false;
}
bool insertNode(int val) {//链表的加入
	ListNode* tail = head->next;
	head->next = new ListNode(val);
	head->next->next = tail;
	return true;
}
void traverse() {
	ListNode* curr = head->next;
	if (curr == nullptr)cout << "没有元素" << endl;
	while (curr) {
		cout << curr->val << " ";
		curr = curr->next;
	}
	cout << endl;
}
int main() {
	cout << "按1加入元素" << endl << "按2删除元素" << endl << "按3遍历元素" << "按其他键退出" << endl;
	while (1) {
		int control;
		cout << "请输入(1 - 3)来进行操作:" << endl;
		//cout << endl;
		cin >> control;
		int val;
		bool ret = false;
		switch (control) {
		case 1:
			cout << "请输入要加入的元素:" << endl;
			cin >> val;
			ret=insertNode(val);
			if (!ret)cout << "插入元素有问题" << endl;
			break;
		case 2:
			cout << "请输入要删除的元素:" << endl;
			cin >> val;
			 ret=deleteNode(val);
			if (!ret)cout << "没有要删除的元素" << endl;
			break;
		case 3:
			cout << "经过遍历可以得到:" << endl;
			traverse();
			break;
		default:
			exit(0);
			break;
		}
	}
	return 0;
}
结果如下

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

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

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