链队----cc++的代码代码实现

链队----cc++的代码代码实现,第1张


链队----c/c++的代码代码实现**
前言

这是对之前文章栈与对列的代码实现,如果有一些细节不知道可以看之前的文章或数据结构这本书。


代码
#include "iostream"
using namespace std;
typedef struct qnode {
	int data;
	struct qnode* next;
}qnode ,*quen;
typedef struct {
	quen front;
	quen rear;
}linkque;
//链队的初始化
linkque initque(linkque& q)
{
	q.front = q.rear = new qnode;//c++
	//q.front=q.rear=(quen)malloc(sizeof(qnode));c
	if (!q.front)
		cout << "初始化失败" << endl;
	q.front->next = NULL;
	return q;
}
//将元素e入队
void enque(linkque& q)
{
	int e;
	cout << "请输入入队的元素" << endl;
	cin >> e;
	quen p;
	p = new qnode;
	if (p)
	{
		p->data = e;
		p->next = NULL;
		q.rear->next = p;
		q.rear = p;
	}
}
//求链队的队头元素
void gethead(linkque& q)
{
	int e;
	if (q.front == q.rear)
		cout << "链队为空" << endl;
	e = q.front->next->data;
	cout << "队头元素为" << e << endl;
}
//链队的出队
void deque(linkque& q)
{
	quen p;
	int e;
	if (q.front == q.rear)
		cout << "链队为空" << endl;
	p = q.front->next;
	e = p->data;
	q.front->next = p->next;
	if (q.rear == p)
		q.rear = q.front;
	delete p;
}
//销毁队列
void  destroyque(linkque& q)
{
	quen p;
	while (q.front)
	{
		p = q.front->next;
		delete(q.front);
		q.front = p;
	}
}
//创建链队
linkque greatque(linkque& q)
{
	int n;
	cout << "请输入入队的元素个数" << endl;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		enque(q);
	}
	return q;
}
void print(linkque& q)
{
	int e;
	quen p;
	if (q.front == q.rear)
		cout << "链队为空" << endl;
	p = q.front->next;	
	while (p)
	{
		cout << p->data << "  ";
		p = p->next;
	}
	cout << endl;

}
void meau()
{
	cout << "********1、入队                 2、求队头*********" << endl;
	cout << "********3、出队                 4、销毁队列*********" << endl;
	cout << "********5.遍历                   6、退出************   " << endl;
}
int main()
{
	linkque q;
	initque(q);
	greatque(q);
	int choice;
	while (1)
	{
		meau();
		cout << "请输入菜单号" << endl;
		cin >> choice;
		if (choice == 6)
			break;
		switch (choice)
		{
		case 1:enque(q); break;
		case 2:gethead(q);   break;
		case 3:deque(q); break;
		case 4: destroyque(q); break;
		case 5:print(q); break;
		default:cout << "输入错误" << endl; break;
		}
			
	}
	return 0;
}
运行结果
请输入入队的元素个数
4
请输入入队的元素
1
请输入入队的元素
3
请输入入队的元素
4
请输入入队的元素
6
********1、入队                 2、求队头*********
********3、出队                 4、销毁队列*********
********5.遍历                   6、退出************
请输入菜单号
5
1  3  4  6
********1、入队                 2、求队头*********
********3、出队                 4、销毁队列*********
********5.遍历                   6、退出************
请输入菜单号
2
队头元素为1
********1、入队                 2、求队头*********
********3、出队                 4、销毁队列*********
********5.遍历                   6、退出************
请输入菜单号
1
请输入入队的元素
8
********1、入队                 2、求队头*********
********3、出队                 4、销毁队列*********
********5.遍历                   6、退出************
请输入菜单号
5
1  3  4  6  8
********1、入队                 2、求队头*********
********3、出队                 4、销毁队列*********
********5.遍历                   6、退出************
请输入菜单号
3
********1、入队                 2、求队头*********
********3、出队                 4、销毁队列*********
********5.遍历                   6、退出************
请输入菜单号
5
3  4  6  8
********1、入队                 2、求队头*********
********3、出队                 4、销毁队列*********
********5.遍历                   6、退出************
请输入菜单号
4
********1、入队                 2、求队头*********
********3、出队                 4、销毁队列*********
********5.遍历                   6、退出************
请输入菜单号
6

D:\c++\1\x64\Debug\1.exe (进程 33432)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

希望可以对大家有些帮助。
下一篇文章见。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1295926.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-10
下一篇2022-06-10

发表评论

登录后才能评论

评论列表(0条)

    保存