链队列操作实验报告,附完整代码,运行结果截图(链队列的出队入队)

一、实验目的

1. 掌握队列的链式存储结构及其编程。

二、实验原理或意义

通过上机实验,加深对队列的链式存储结构知识的掌握。

三、实验重点

1. 入队与出队的操作。

四、实验难点

1. 队列的链式存储结构。

五、实验方法(或技术)

上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。

六、实验内容

1.链式队列的操作编程

(1)完成环境设置及链队列的结构体定义。

(2)编写初始化函数。

(3)编写入队函数、出队函数。

(4)编写主函数对上面各个函数实现调用,记录并分析程序的运行结果。

七、实验报告要求内容

1.实验目的

(1)掌握队列的链式存储结构及其编程。

2.实验要求

1.链式队列的操作编程

(1)完成环境设置及链队列的结构体定义。

(2)编写初始化函数。

(3)编写入队函数、出队函数。

(4)编写主函数对上面各个函数实现调用,记录并分析程序的运行结果。

3.实验代码

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

typedef struct Node {

int data;

struct Node* next;

}LinkNode;

typedef struct Queue {

LinkNode* rear;

LinkNode* front;

int count; //用于记录队列的元素个数

}LinkQueue;

//带头结点初始化

void initLinkQueue(LinkQueue& Q) {

Q.rear = Q.front = (LinkNode*)malloc(sizeof(LinkNode));

Q.front->next = NULL;

Q.count = 0;

}

bool EnLinkQueue(LinkQueue& Q, int e) {

LinkNode* p = (LinkNode*)malloc(sizeof(LinkNode));

if (!p) { //如果 p 为空开辟结点失败

return false;

}

p->data = e;

p->next = NULL;

Q.rear->next = p;



Q.rear = p; //调整 rear 指针位置

Q.count++;

return true;

}

bool DelinkQueue(LinkQueue& Q, int& x) {

if (Q.rear == Q.front) {

return false;

}

LinkNode* p = Q.front->next;

x = p->data;

Q.front->next = p->next;

if (Q.rear == p) {

!p->next;

Q.rear = Q.front;

}

free(p);

Q.count--;

p = NULL;

return true;

}

bool isEmpty(LinkQueue& Q) {

if (Q.rear == Q.front) {

printf("队列为空");

return true;

}

return false;

}

//打印元素

void printLinkQueueList(LinkQueue& Q) {

for (int i = 0; i < Q.count; i++) {

Q.front = Q.front->next;

printf(" %d \n", Q.front->data);

}

}

int getSize(LinkQueue& Q) {

return Q.count;

}

void menu() {

printf("==========请输入你的操作===========\n");

printf("==========1.初始化队列\n");

printf("==========2.入队\n");

printf("==========3.出队\n");

printf("==========4.获取队列大小\n");

printf("==========5.查看队列元素\n");

printf("==========6.退出\n");

printf("\n");

}

int main() {

LinkQueue Q;

int enEle = 0;

int deEle = 0;

int Qsize = 0;

int ope = 0;

bool loop = true;

while (loop) {

menu();

printf("请输入你的操作:");

scanf("%d", &ope);

switch (ope)

{

case 1:

initLinkQueue(Q);

printf("初始化队列成功!\n");

break;

case 2:

printf("输入入队元素:");

scanf("%d", &enEle);

EnLinkQueue(Q, enEle);

printf("入队成功!\n");

break;

case 3:

printf("输入出队元素:");

scanf("%d", &deEle);

DelinkQueue(Q, deEle);

printf("出队元素为:%d\n", deEle);

break;

case 4:

Qsize = getSize(Q);

printf("%d\n", Qsize);

break;

case 5:

printf("队列的元素为:\n");

printLinkQueueList(Q);

break;

case 6:

loop = false;

printf("退出成功!");

break;

default:

printf("输入不合理,请重新输入!");

break;

}

}

}

4.实验结果截图

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值