数据结构(使用C语言)队列

Python015

数据结构(使用C语言)队列,第1张

对顺序循环队列,常规的设计方法是使用队尾指针和队头指针,队尾指针用于指出当前胡队尾位置下标,队头指针用于指示当前队头位置下标。现要求:

(1)设计一个使用队头指针和计数器胡顺序循环循环队列抽象数据类型,其中包括:初始化,入队列,出队列,取队头元素肯判断队列是否非空;

#include "stdio.h"

#include "malloc.h"

#include "stdlib.h"

#include "conio.h"

#define MAX 80

typedef struct

{

int data[MAX]

int front,rear

int num

}SeQue

SeQue *Init_SeQue()

{

SeQue *s

s=new SeQue

s->front=s->rear=MAX-1

s->num=0

return s

}

int Empty_SeQue(SeQue *s)

{

if(s->num==0)

return 1

else

return 0

}

int In_SeQue(SeQue *s,int x)

{

if(s->num==MAX)

return 0

else

s->rear=(s->rear+1)%MAX

s->data[s->rear]=x

s->num++

return 1

int Out_SeQue(SeQue *s,int *x)

{

if(Empty_SeQue(s))

return 0

else

{

s->front=(s->front+1)%MAX

*x=s->data[s->front]

s->num--

return 1

}

}

void Print_SeQue(SeQue *s)

{

int i,n

i=(s->front+1)%MAX

n=s->num

while(n>0)

{ printf("%d ",s->data[i])

i=(i+1)%MAX

n--

}

}

void main()

{

SeQue *s

int k,flag,x

s=Init_SeQue()

do{

printf("\\\")

printf("\\t\\t\\t循环顺序队列\")

printf("\\t\\t\\t***********************\")

printf("\\t\\t\\t**1-入队**\")

printf("\\t\\t\\t**2-出队**\")

printf("\\t\\t\\t**3-判 队 空**\")

printf("\\t\\t\\t**4-队列显示**\")

printf("\\t\\t\\t**0-返回**\")

printf("\\t\\t\\t***********************\")

printf("\\t\\t\\t 请输入菜单项(0-4):")

scanf("%d",&k)

switch(k)

{

case 1:

printf("\请输入入队元素:")

scanf("%d",&x)

flag=In_SeQue(s,x)

if(flag==0)

printf("\队满不能入队!按任意键返回..")

else

printf("\元素已入队!按任意键返回..")

getch()

system("cls")

break

case 2:

flag=Out_SeQue(s,&x)

if(flag==0)

printf("\队列空出队失败!按任意键返回..")

else

printf("\队列头元素已出队~!按任意键返回..")

getch()

system("cls")

break

case 3:

flag=Empty_SeQue(s)

if(flag==1)

printf("\该队列为空!按任意键返回..")

else

printf("\该队列不为空!按任意键返回..")

getch()

system("cls")

break

case 4:

printf("\该队列元素为:")

Print_SeQue(s)

printf("\按任意键返回..")

getch()

system("cls")

break

}

}while(k!=0)

}

双端队列数据类型

typedef

struct

qnode

{

DataType

data

struct

qnode

*next

}LQNode

typedef

struct

{

LQNode

*front

LQNode

*rear

}LQueue

尾出队:首先判断队列是否为空,如为空则提示队列为空,如不为空则将队尾结点

赋给临时结点。将队尾结点的前驱指针赋给队列的队尾指针,再将队尾结

点的后继指针置空。最后返回临时结点或所需要的数据。