线性表 链队列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表 链队列相关的知识,希望对你有一定的参考价值。
用C语言写的~~~
试编写算法,实现链队列的下列操作算法:
(1)initlq(q)。初始化操作,建立一个空队列q;
(2)emptylq(q)。判定队列q是否为空;
(3)enterlq(q)。进队列;
(4)deletelq(q)。出队列。
额~~~好像和线性表没有什么关系~~~~反正是数据结构里的内容
#include <iostream.h>
#include <stdlib.h>
typedef char Elemtype;
typedef struct Qnode//定义一个链表队列结构
Elemtype data;
struct Qnode *next;
QType;
typedef struct qptr
QType *front,*rear;
LinkQueue; //链队类型
//队空条件lq->front==lq->rear==NULL
//初始化队列运算算法
void InisQueue(LinkQueue *&lq)
lq=(LinkQueue *)malloc(sizeof(LinkQueue));
lq->front=lq->rear=NULL;
//入队列操作
void EnQueue(LinkQueue *&lq,Elemtype x)
QType *s;
s=(QType *)malloc(sizeof(QType));
s->data=x;s->next=NULL;
if(lq->rear==NULL&&lq->front==NULL)//空队列
lq->rear=lq->front=s;
else
lq->rear->next=s;
lq->rear=s;
EnQueue_Num(LinkQueue *lq)
char c1;
cout<<"请输入要出队列的值:"<<endl;
cin>>c1;
EnQueue(lq,c1);
//出队列操作
int DeQueue(LinkQueue *&lq,Elemtype &x)
QType *p;
if(lq->front==NULL&&lq->rear==NULL)
cout<<"空队列"<<endl;return 0;
p=lq->front;
x=p->data;
if(lq->rear==lq->front)
lq->rear=lq->front=NULL;
else
lq->front=lq->front->next;
free(p);
cout<<"删除成功:"<<endl;
return 1;
int QueueEmpty(LinkQueue *lq)
if (lq->front==NULL&&lq->rear==NULL)
cout<<"空队列:"<<endl;
return 0;
else
cout<<"非空:"<<endl;
return 1;
void main()
LinkQueue *t;
InisQueue(t);
EnQueue_Num(t);
QueueEmpty(t);
参考技术A typedef struct QNode
QElemType data ;
struct QNode *next ;
QNode, *QueuePtr ;
typedef struct
QueuePtr front ; //队头指针
QueuePtr rear ; // 队尾指针
LinkQueue ;
Status InitQueue( LinkQueue &Q )
//构造一个空队列
Q.front = Q.rear = (QueuePtr )malloc(sizeof(QNode));
if( !Q.front) exit(OVERFLOW); //存储空间分配失败
Q.front->next = NULL ;
return OK ;
Status QueueEmpty( LinkQueue &Q ) //判断队列是否为空
if( Q.front == Q.rear )
return OK;
else
return ERROR;
Status EnQueue( LinkQueue &Q, QElemType e )
//插入元素e为Q的新的队尾元素
QueuePtr p;
p = (QueuePtr)malloc(sizeof(QNode));
if(!p) exit(OVERFLOW); //分配内存失败
p->data = e ;
p->next = NULL;
Q.rear ->next = p ;
Q.rear = p ;
return OK;
Status DeQueue( LinkQueue &Q, QElemType &e)
//若队列不空,则删除Q的对头元素,用e返回其值,并返回OK
//否则返回ERROE
QueuePtr p ;
if( Q.front == Q.rear )
return ERROR;
p = Q.front->next ;
e = p->data ;
Q.front ->next = p ->next ;
if( Q.rear == p )
Q.rear = Q.front ;
free(p);
return OK;
LZ慢慢看吧,是我以前做的实验来的
以上是关于线性表 链队列的主要内容,如果未能解决你的问题,请参考以下文章