0
点赞
收藏
分享

微信扫一扫

单链表实现(C++实现)


感想

链表这玩意儿呢,我jio得吧其实就是会者不难难者不会,还记得大一刚刚学链表的时候极度痛苦,搞了好几天才能勉强编出来,昨天老师布置让用c++写一个单链表,刚开始还有点犹豫怕写不出来,没想到竟是信手拈来hhh。

源码

#include <iostream>
using namespace std;
class node
{
public:u
	int value;
	node* next;
	int get(int a)
	{
		return a;
	}
};
node* head = NULL;
class link
{
public:

	void creat();//创建链表
	void push();//插入元素
	void pop();//删除元素
	void watch();//浏览链表
};
void print()
{
	cout << "1.插入元素\n2.删除元素\n3.浏览链表\n4.退出系统" << endl;
}
void link::creat()
{
	int a = 0;
	cout << "请输入一个元素" << endl;
	cin >> a;
	head = new node[sizeof(node)];
	head->value = a;
	head->next = NULL;
}
void link::push()
{
	if (head == nullptr)
		cout << "链表为空" << endl;
	else
	{
		node* p = head;
		int a;
		cout << "请输入一个元素" << endl;
		cin >> a;
		node* d;
		d = new node[sizeof(node)];
		d->value = a;
		d->next = nullptr;
		while (p->next != nullptr)
		{
			p = p->next;
		}
		p->next = d;
	}
}
void link::pop()
{
	if (head == nullptr)
		cout << "链表为空" << endl;
	else
	{
		int a;
		node* p = head;
		node* q = nullptr;
		cout << "请输入你想要删除的元素" << endl;
		cin >> a;
		while (p->value != a && p->next != nullptr)
		{
			q = p;
			p = p->next;
			if (p->value == a)
			{
				q->next = p->next;
				free(p);
			}
		}
		if (head->value == a)
		{
			node* a=head;
			head = head->next;
			free(a);
		}
	}
}
void link::watch()
{
	if (head == nullptr)
		cout << "链表为空" << endl;
	else
	{
		node* p = head;
		while (p->next != nullptr)
		{
			cout << p->value << "->";
			p = p->next;
		}
		cout << p->value << endl;
	}
}
int main()
{
	node a;
	link s;
	print();
	int b=0;
	cout << "请先创建一个链表" << endl;
	s.creat();
	while (b != 4)
	{
		print();
		cin >> b;
		switch (b)
		{
		case 1:s.push(); break;
		case 2:s.pop(); break;
		case 3:s.watch(); break;
		}
	}
	return 0;
}


举报

相关推荐

0 条评论