您的位置:首页 > 理论基础 > 数据结构算法

数据结构---队列顺序表c实现

2012-04-07 14:11 441 查看
#include <stdio.h>

#include <stdlib.h>

typedef int elemType;

#define maxsize 100

struct Quenue {

elemType *date;

int front;

int rear;

};

void InitQueue(struct Quenue *q)

{

q->date = malloc(maxsize * sizeof(elemType));

q->front = q->rear = 0;

return ;

}

void DestroyQueue(struct Quenue *q)

{

if(q->date!=NULL)

{

free(q->date);

q->front = q->rear = 0;

}

return ;

}

void ClearQueue(struct Quenue *q)

{

if(q->date!=NULL)

{

q->front = q->rear = 0;

}

return ;

}

int QueueEmpty(struct Quenue *q)

{

if(q->front==q->rear==0)

{

return 1;

}

else

return 0;

}

int QueueLength(struct Quenue *q)

{

if(q->date!=NULL)

{

return q->rear-q->front;

}

else

return 0;

}

elemType GetHead(struct Quenue *q)

{

if(q->date!=NULL)

{

return q->date[q->front];

}

else

return 0;

}

void EnQueue(struct Quenue *q,elemType e)

{

if(QueueLength(q)!=maxsize)

{

q->date[q->rear] = e;

q->rear++;

}

return ;

}

elemType DeQueue(struct Quenue *q)

{

elemType x = 0;

if(q->date!=NULL)

{

x = q->date[q->front];

q->front++;

}

return x;

}

void traverse(struct Quenue s)

{

struct Quenue *p =&s;

printf("从队首到队尾依次输出:");

while(p->front!=p->rear)

{

printf("%d ",p->date[p->front]);

p->front++;

}

return ;

}

void main()

{

elemType x = 0;

int i = 0;

struct Quenue s;

while(1)

{

printf("1->初始化顺序队列\n");

printf("2->销毁队列\n");

printf("3->清空队列\n");

printf("4->判空队列\n");

printf("5->队列长度\n");

printf("6->读取队首元素\n");

printf("7->入列\n");

printf("8->出列\n");

printf("9->遍历队列\n");

printf("清选择操作:");

scanf("%d",&i);

switch(i)

{

case 1:

printf("初始化顺序队列");

InitQueue(&s);

break;

case 2:

printf("销毁队列:");

DestroyQueue(&s);

break;

case 3:

printf("清空队列:");

QueueEmpty(&s);

getchar();

getchar();

break;

case 4:

if(QueueEmpty(&s))

{

printf("队列非空!");

getchar();

getchar();

break;

}

else

printf("队列为空!");

getchar();

getchar();

break;

case 5:

printf("队列长度为%d:",QueueLength(&s));

getchar();

getchar();

break;

case 6:

printf("队首元素为%d:",GetHead(&s));

getchar();

getchar();

break;

case 7:

printf("请输入入列元素:");

scanf("%d",&x);

EnQueue(&s,x);

getchar();

getchar();

break;

case 8:

printf("出列元素为:%d",DeQueue(&s));

getchar();

getchar();

break;

case 9:

printf("遍历队列!\n");

traverse(s);

getchar();

getchar();

break;

}

system("cls");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: