【数据结构】链式队列的基本操作
来源:互联网 发布:qt4.8.4 源码下载 编辑:程序博客网 时间:2024/04/30 07:01
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Node)
#define OK 1
#define ERROR 0
typedef int QElemType;
//定义QNode为指针类型
typedef struct QNode{
QElemType data;
structQNode *next;
}*QueuePtr;
//front\rear为QNode的指针
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//输出当前队列
int Queue_print(LinkQueue& Q)
{
QueuePtr p;
p=Q.front;
printf("当前的队列为:\n");
while(p->next!=NULL)
{
p=p->next;
printf("%d ",p->data);
}
printf("\n");
returnOK;
}
//建立空队列与入队的合并
int InitQueue(LinkQueue& Q,intt)
{
Q.front = Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)return ERROR;
Q.front->next = NULL;
QueuePtr q;
inti;
for(i=1;i<=t;i++)
{printf("请输入第%d个入队元素\n",i);
q=(QueuePtr)malloc(sizeof(QNode));
scanf("%d",&q->data);
Q.rear->next = q;
Q.rear = q;
Q.rear->next=NULL;}
Queue_print(Q);
returnOK;
}
//元素入队
int Queue_Input(LinkQueue& Q)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
printf("请输入一个入队元素\n");
scanf("%d",&p->data);
Q.rear->next=p;
p->next=NULL;
Q.rear=p;
Queue_print(Q);
returnOK;
}
//元素出队
int Queue_Output(LinkQueue& Q)
{
QueuePtr p;
p=Q.front->next;
Q.front->next=p->next;
if(Q.rear==p)Q.rear=Q.front;
printf("首元素%d 出队\n",p->data);
free(p);
Queue_print(Q);
returnOK;
}
//查找队元素
int Seek(LinkQueue& Q,int t)
{
inti=1;
QueuePtr p;
p=Q.front;
while(p->next!=NULL)
{p=p->next;
if(t==p->data)
printf("这是第%d个元素\n",i);
elseprintf("这不是第%d个元素\n",i,t);
i++;
}
returnOK;
}
//元素排队
int Queue_Order(LinkQueue&Q)
{
inttemp;
QueuePtr p,q;
for(p=Q.front->next;p->next!=NULL;p=p->next)
{for(q=p->next;q->next!=NULL;q=q->next)
if(p->data>q->data)
{temp=p->data;p->data=q->data;q->data=temp;}}
Queue_print(Q);
returnOK;
}
//主函数
void main()
{
LinkQueue Q;
intt;
printf("请一步步按照提示操作 (@_@) 绝对给力!!!\n");
printf("请输入要入队元素的个数:\n");
scanf("%d",&t);
InitQueue(Q,t);
intflag=1,select;
printf("====================菜单===========================\n");
printf("= 1.元素入队 =\n");
printf("= 2.元素出队 =\n");
printf("= 3.查找队元素 =\n");
printf("= 4.排队啦 =\n");
printf("= 5.退出操作 =\n");
printf("================支持乱序选择=======================\n");
while(flag){
printf("\n请选择菜单中的操作选项:\n");
scanf("%d",&select);
switch(select)
{
case1:
Queue_Input(Q);break;
case2:
Queue_Output(Q);break;
case3:
printf("请输入要查找的队中元素(显示它的位置是第几个):\n");
scanf("%d",&t);
Seek(Q,t);break;
case4:
printf("给队列元素按递增顺序排队\n");
Queue_Order(Q);break;
case5:
flag=0;break;
default:printf("您输入的数据有误!\n");
}
}
}
- 【数据结构】链式队列的基本操作
- 链式队列的基本操作
- 基本数据结构:链式队列
- 基本数据结构:链式队列
- PHP数据结构之七_队列的链式存储和队列的基本操作
- 链式队列基本操作
- 链式队列基本操作
- 【数据结构】 链式队列的一些操作
- 数据结构之链式队列的所有操作
- 链式队列的基本操作实现c++
- 链式队列的基本操作(配图)
- 链式队列的基本操作与实现
- 数据结构 串(链式存储)的基本操作
- 数据结构队列的基本操作
- 数据结构 队列的基本操作
- 【数据结构】 队列的基本操作
- 【数据结构】队列的基本操作
- [数据结构]队列的基本操作
- 【数据结构】链表的基本操作
- ACRA(异常处理)
- java泛型(一)--泛型的简单介绍以及常用情况
- 29.Oracle数据库SQL开发之 SQLPlus使用——创建简单报表
- 《leetCode》30道题小结
- 【数据结构】链式队列的基本操作
- linux学习之绪论(相关软件)
- Android Shimmer微光闪烁shimmer-android
- oss系统和bss系统 mss系统是什么意思
- 30.Oracle数据库SQL开发之 SQLPlus使用——从SQL获取帮助信息
- 数论总结
- 【数据结构】顺序表的基本操作
- Android开发中常见错误——数据存储
- iOS本地推送(本地通知)