[데이터 구조] 순환 대기 열의 일부 함수
1 #include
2 #include
3
4 #define OK 1
5 #define ERROR 0
6 #define MAXQSIZE 10
7 typedef int Status;
8 typedef int QElemType; //
9
10 typedef struct
11 {
12 QElemType *base;
13 int front;
14 int rear;
15 }SqQueue; //
16
17 Status InitQueue(SqQueue & Q) ;// ,
18 Status GetHead(SqQueue Q,QElemType &e) ;// e
19 Status EnQueue(SqQueue &Q,QElemType e);// , e
20 Status DeQueue(SqQueue &Q,QElemType &e);// , e
21 int QueueLength(SqQueue Q);//
22
23 int main()
24 {
25 SqQueue Q;
26 int m;
27 QElemType e;
28 InitQueue(Q);
29 scanf("%d",&m);
30 while(m!=0) //m=0
31 {
32 if(m==1) //m=1
33 {
34 scanf("%d",&e);
35 EnQueue(Q,e);
36 }
37 else if(m==2)//m=2
38 {
39 DeQueue(Q,e);
40 }
41 scanf("%d",&m);
42 }
43 printf("length=%d
",QueueLength(Q));
44 if (GetHead(Q,e)==OK)
45 printf("first=%d",e);
46 else
47 printf("first=NULL");
48 return 0;
49 }
50
51 Status InitQueue(SqQueue & Q) // ,
52 {
53 Q.base=(QElemType *)malloc(sizeof(QElemType)*MAXQSIZE);
54 if(!Q.base)
55 return ERROR;
56 Q.front=Q.rear=0;
57 return OK;
58 }
59
60 Status GetHead(SqQueue Q,QElemType &e) // e
61 {
62 if(Q.rear==Q.front) return ERROR;
63 e=Q.base[Q.front];
64 return OK;
65 }
66
67 Status EnQueue(SqQueue &Q,QElemType e)// , e
68 {
69 if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR;
70 Q.base[Q.rear]=e;
71 Q.rear=(Q.rear+1)%MAXQSIZE;
72 return OK;
73 }
74
75 Status DeQueue(SqQueue &Q,QElemType &e)// ,
76 {
77 if(Q.rear==Q.front) return ERROR;
78 e=Q.base[Q.front];
79 Q.front=(Q.front+1)%MAXQSIZE;
80 return OK;
81 }
82
83 int QueueLength(SqQueue Q)//
84 {
85 return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
86 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.