每日一贴,今天的内容关键字为队列输入
队列是先进先出的数据结构,出队的一端叫队首,入队的一端叫队尾,就像是平常生活中排队买火车票一样,上面是队列的基本操作
#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滚出网路世界!不要以为市占有率高就可以持续出烂货产品!以后替代品多得是!