当前位置: 首页 > news >正文

【数据结构】宜宾大学-计院-实验五

实验五 栈和队列(队列的基本操作)

  • 实验目的:
    • 链表结点结构:
    • 实验结果:
      • 运行截图:
      • 代码实现:

实验目的:

1.掌握队列的顺序存储结构和链式存储结构
2.实现队列的基本操作,包括队列的建立、入队列、出队列、判断队列是否空等
实验内容:
1.完成链队列的建立
2.实现链队列的入队操作
3.实现链队列的出队列操作
4.实现判断链队列是否为空
5.实现销毁链队列
6.自己设计一组数据,模拟入队列,出队列

链表结点结构:

typedef struct QNode
{
int data;
struct QNode *Next;
}QNode,*QueuePtr;
队列结构:
struct
{
QueuePtr front;
QueuePtr rear;
}Ptr;

实验结果:

每个同学都要记录实验结果(无论对与错),如果程序调试中有什么错误,记录并分析原因,必须另寻时间调试成功。
实验报告:(及时撰写实验报告)

答:代码有点挫,但能正确跑,遇到的问题都解决了

运行截图:

在这里插入图片描述

代码实现:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;typedef int datatype;
//节点成员变量的建立
typedef struct QNode
{datatype data;struct QNode* Next;
}QNode, *QueuePtr;//匿名结构体,成员变量为队列首尾指针
struct
{QueuePtr front = NULL;QueuePtr rear = NULL;
}Ptr;//开辟一个新节点
QNode* BuyNode(datatype x)
{QNode* newnode = (QNode*)malloc(sizeof(QNode));if (newnode == NULL) return NULL;else{newnode->data = x;newnode->Next = NULL;}return newnode;
}//初始化头节点
void InitHead(QueuePtr head)
{head = BuyNode(0);Ptr.front = head;Ptr.rear = head;
}//销毁链式队列
void DestroyQueue(QueuePtr head)
{QueuePtr pcur = head;while (pcur){QueuePtr next = pcur->Next;free(pcur);pcur = next;}
}//队列插入元素的实现(即入队列)
void push(datatype x)
{QueuePtr node = BuyNode(x);Ptr.rear->Next = node;Ptr.rear = node;
}//队列元素的删除(即头删)
void pop()
{QueuePtr del = Ptr.front->Next;if (del == NULL)return;else{QueuePtr next = del->Next;Ptr.front->Next = next;free(del);del = NULL;}
}//判空
bool EmptyQueue()
{if (Ptr.front->Next == NULL)return true;elsereturn false;
}//获取队列首元素(即出队列)
datatype GetHead()
{if (Ptr.front->Next == NULL)return 0;elsereturn Ptr.front->Next->data;
}//队列当前元素个数
int SizeQueue()
{int count = 0;QueuePtr pcur = Ptr.front->Next;while (pcur){count++;QueuePtr next = pcur->Next;pcur = pcur->Next;}return count;
}int main()
{QueuePtr head = NULL;InitHead(head);push(1);push(2);push(3);push(4);push(5);push(6);push(7);push(8);cout << "队列中当前元素的个数:" << SizeQueue() << endl << endl;cout << "依次输出队列中所有元素:" << endl;while (!EmptyQueue()){cout << GetHead() << " ";pop();}cout << endl << endl;cout << "销毁队列:" << endl;DestroyQueue(head);cout << "销毁队列后队列中的元素个数:" << SizeQueue();return 0;
}

实验三传送门


http://www.mrgr.cn/news/59539.html

相关文章:

  • C#生成SVG文件(文本、线段、圆、椭圆、多边形的示例)
  • 2024年9月gesp三级 做题记录
  • 【QT】常用控件(四)
  • 逻辑回归与神经网络
  • Web组态软件
  • 【5.2】指针算法-双指针求盛最多水的容器
  • 计算机毕业设计Java银行存取系统 银行交易管理系统 金融数据处理 用户存取管理系统(源码+定制+开发)
  • YOLOv11/10/8算法改进【NO.151】引入用于密集图像预测的频率感知特征融合
  • JavaSE——反射
  • Python实现微博舆情分析的设计与实现
  • Pytest-Bdd-Playwright 系列教程(3):支持测试用例并行执行
  • python编程-闭包
  • 【unity】【游戏开发】Unity代码不给提示怎么办?
  • 租房业务全流程管理:Spring Boot系统应用
  • MTALAB guide 串口简洁版1
  • c++——哈希表的模拟实现
  • 关于Java中**optional,stream,lambda**
  • 特殊主题短视频资源推荐
  • 好用的骨传导运动耳机有哪些?2024年五款高口碑骨传导耳机分享
  • 100种算法【Python版】第14篇——Pollard‘s Rho 质因数分解算法
  • 10.Linux按键驱动-中断的线程化处理threadirq
  • 【LeetCode热题100】链表
  • 虚拟化平台
  • 《深入浅出HTTPS​​》读书笔记(2):HTTP
  • 【日常知识点】Java 语法糖,你用过几个?
  • 【日常知识点】到底推不推荐用JWT?