线性表 链队列

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慢慢看吧,是我以前做的实验来的

以上是关于线性表 链队列的主要内容,如果未能解决你的问题,请参考以下文章

常见的线性结构

数据结构:链表链队列

数组链表队列栈理解

线性表--07---队列

基础数据结构 例:栈队列链表数据字典树等

浅析用链表实现的队列