数据结构---队列顺序表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");
}
}
#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");
}
}
相关文章推荐
- 数据结构-队列-顺序表实现-C语言
- 数据结构之数组实现队列
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
- 数据结构 P62-62 算法实现 单链队列的创建及基本操作
- java实现栈,队列数据结构
- (C语言队列的顺序实现(数据结构十)
- [数据结构]用插入排序和选择排序的思想实现优先级队列
- 数据结构的C实现_顺序表
- 数据结构之带优先级的队列(C语言实现)
- 数据结构之 队列(C语言实现)
- C++数据结构环形队列Deque实现
- 数据结构-队列-链表实现
- 数据结构:JavaScript实现队列
- [数据结构]程杰队列的链式存储结构及实现代码
- 【数据结构】堆栈、队列的原理及java实现
- 数据结构--二项队列分析及实现
- c++数据结构 链队列的实现
- 数据结构c代码实现顺序表01
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 数据结构-队列的链式存储实现操作