체인 테이블이 양단 대기열을 실현하다
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct _queue
- {
- int data;
- struct _queue *next;
- }QUEUE;
-
- QUEUE *front = NULL, *rear = NULL;
-
- int InQueue(int value)
- {
- QUEUE *temp = NULL;
-
- temp = (QUEUE *)malloc(sizeof(QUEUE));
- temp->data = value;
- temp->next = NULL;
-
- if(front == NULL)
- front = temp;
- else
- rear->next = temp;
- rear = temp;
- return 1;
- } //
- int InQueue2(int value)
- {
- QUEUE *temp = NULL;
- temp = (QUEUE *)malloc(sizeof(QUEUE));
-
- temp->data = value;
- temp->next = NULL;
-
- if(front == NULL && rear == NULL)
- {
- front = rear = temp;
- rear->next = front->next = NULL;
- }
- else
- {
- temp->next = front;
- front = temp;
- }
- } //
-
- int OutQueueByFront(int *value)
- {
- QUEUE *temp = NULL;
- temp = front;
- if(front == NULL)
- return 0;
- *value = front->data;
- front = front->next;
- free(temp);
- return 1;
- }
-
- int OutQueueByRear(int *value)
- {
- QUEUE *temp;
- if(rear == NULL)
- return 0;
-
- if(front == rear)
- {
- *value = rear->data;
- free(rear);
- front = NULL;
- rear = NULL;
- }else
- {
- temp = front;
- while(temp->next != rear)
- temp = temp->next;
- *value = rear->data;
- free(rear);
- rear = temp;
- rear->next = NULL;
- }
- return 1;
- }
-
-
- void main()
- {
- int arr[6] = {1,2,3,4,5,6},res,i;
- for(i=0; i<6; i++)
- InQueue2(arr[i]);
- if(OutQueueByFront(&res))
- printf("what we get is %d
",res);
- else printf("we not get it
");
- if(OutQueueByRear(&res))
- printf("what we get is %d
",res);
- else printf("we not get it
");
- }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
하나의 단일 체인 테이블의 순환과 귀속 실현을 반전시키다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.