数据结构实验之队列一:排队买饭
2016-08-16 09:50
197 查看
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct node { int data; node *next; }*qtype; typedef struct { qtype front,rear; int length; } que; int QueInitial(que &q) { q.front=q.rear=(qtype)malloc(sizeof(node)); q.front->next=NULL; q.length=0; return 1; } void InQue(que &q,int e) { qtype p; p=(qtype)malloc(sizeof(node)); p->data=e; p->next=NULL; q.rear->next=p; q.rear=p; q.length++; } int DelQue(que &q) { qtype p; if(q.front==q.rear) return 0; p=q.front->next; q.front->next=p->next; if(q.rear==p) q.rear=q.front; //若是最后一个元素,尾指针指向头指针 free(p); q.length--; return 1; } int visit(que &q,int e) { qtype p1,p2; int i=0; p2=q.front; while((i+1)!=e) { i++; p2=p2->next; } p1=p2->next; p2->next=p1->next; if(p2->next==q.rear) q.rear=p2; free(p1); q.length--; } int main() { int m,i,n,x,j,num; char c[10]; que q; QueInitial(q); scanf("%d",&m); for(i=1; i<=m; i++) { scanf("%d",&num); InQue(q,num); } scanf("%d",&n); while(n--) { scanf("%s",c); if(strcmp(c,"JOIN")==0) { scanf("%d",&x); InQue(q,x); } if(strcmp(c,"LEAVE")==0) { scanf("%d",&x); visit(q,x); } if(strcmp(c,"FINISH")==0) { scanf("%d",&x); for(i=0; i<x; i++) { DelQue(q); } } if(strcmp(c,"LENGTH")==0) { printf("%d\n",q.length); } if(strcmp(c,"ASK")==0) { scanf("%d",&x); qtype p; p=q.front; while(x--) { p=p->next; } printf("%d\n",p->data); } } return 0; }
相关文章推荐
- 数据结构实验之队列一:排队买饭(用链表做了半天,我骄傲!)
- SDUT 2335 - 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 寒假第三天--栈和队列--数据结构实验之队列一:排队买饭
- SDUT 2135 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- SDUT OJ 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- SDUT 2135 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- SDUTOJ 2135--数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭
- 数据结构实验之队列一:排队买饭