每日一贴,今天的内容关键字为队列输入
队列是先进先出的数据结构,出队的一端叫队首,入队的一端叫队尾,就像是平常生活中排队买火车票一样,上面是队列的基本操作
每日一道理
生命不是一篇"文摘",不接受平淡,只收藏精彩。她是一个完整的过程,是一个"连载",无论胜利还是失败,她都不会在你背后留有空白;生命也不是一次彩排,走得不好还可以从头再来,她绝不给你第二次机会,走过去就无法回头。
生命不是一篇"文摘",不接受平淡,只收藏精彩。她是一个完整的过程,是一个"连载",无论胜利还是失败,她都不会在你背后留有空白;生命也不是一次彩排,走得不好还可以从头再来,她绝不给你第二次机会,走过去就无法回头。
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR -1
#define OVERFLOW 0
typedef int elemtype;
typedef int status;
typedef struct QNode
{
elemtype 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 destoryQueue(LinkQueue &q)
{
while(q.front)
{
q.rear=q.front->next; //将头节点的next赋给尾指针
free(q.front); //删除头节点
q.front=q.rear; //重新生成为节点
}
printf("队列销毁胜利!\n");
q.front=NULL;
return OK; //删除完成返回OK
}
//停止元素插入
status enQueue(LinkQueue &q,elemtype e)
{
queuePtr p=(queuePtr)malloc(sizeof(QNode)); //为新元素分配空间
if(!p) exit(OVERFLOW);
p->data=e;
p->next=NULL;
q.rear->next=p; //为尾指针的next重新赋值 将元素插入表尾
q.rear=p; //重新定位尾指针
return OK;
}
//删除元素
status deQueue(LinkQueue &q)
{
if(q.front==q.rear) return ERROR; //此时队列为空
queuePtr p=q.front->next;
// e=p->data; //删除是dui首
q.front->next=p->next;
if(q.rear==p)
q.rear=q.front;
free(p);
printf("元素删除胜利!\n");
return OK;
}
//获得队首元素
status getHead(LinkQueue &q)
{
queuePtr p=q.front->next;
printf("%d\n",p->data);
return OK;
}
//输出队列
status printQueue(LinkQueue q)
{
queuePtr p;
p=q.front->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
return OK;
}
int main()
{
LinkQueue q;
int i,j,k,m;
initQueue(q);//停止队列的初始化:
printf("插入几个数据:\n");
scanf("%d",&i);
for(j=0;j<i;j++)
{ printf("请输入第%d个整数",j+1);
scanf("%d",&k);
enQueue(q,k);
}
do
{
printf("请根据提示停止响应操作:\n");
printf("删除元素选择输入1:\n");
printf("清空队列选择输入2:\n");
printf("输出队列选择输入3:\n");
printf("退出输入4:\n");
scanf("%d",&m);
switch(m)
{
case 1: deQueue(q); break;
case 2: destoryQueue(q); break;
case 3: printQueue(q);break;
default: printf("请重新输入:\n");break;
}
}while(m!=4);
return 0;
}
文章结束给大家分享下程序员的一些笑话语录: AdobeFlash拖垮Windows拖垮IE!又拖垮Linux拖垮Ubuntu拖垮FirxEox!还拖垮BSD拖垮MacOS拖垮Safri!简直无所不拖!AdobeFlash滚出网路世界!不要以为市占有率高就可以持续出烂货产品!以后替代品多得是!