대기 열 - 링크 구현
2495 단어 대열
대기 열 과 스 택 의 차 이 는 대기 열 이 먼저 나 온 데이터 구조 입 니 다.출입 대기 열 을 쉽게 하기 위해 서 는 대기 열 헤드 포인터 와 대기 열 꼬리 지침 을 도입 할 수 있 습 니 다.
분석 설명:
대열 의 결점 구조.
typedef int QElemType;
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode, *QueuePtr;
typedef struct{
QueuePtr front;//
QueuePtr rear;//
}LinkQueue;
LinkQueue Q;
대기 열의 초기 화.
LinkQueue InitQueue(LinkQueue *Q)
{
QueuePtr tmp;
tmp = (QueuePtr)malloc(sizeof(QNode));
if(tmp == NULL){
printf("create queue error.
");
return ;
}
Q->front = tmp;
Q->rear = Q->front;
Q->front->next = NULL;
return *Q;
}
대기 열 에 들 어가 조작 하 다.
void EnQueue(LinkQueue *Q, QElemType e)
{
QueuePtr tmp;
tmp = (QueuePtr)malloc(sizeof(QNode));
if(tmp == NULL){
printf("create queue error.
");
return ;
}
tmp->data = e;
tmp->next = NULL;
Q->rear->next = tmp;
Q->rear = tmp;
return;
}
대기 열 조작.
void DeQueue(LinkQueue *Q, QElemType *e)
{
QueuePtr tmp;
if(Q->front == Q->rear){
printf("the queue is empty.
");
return ;
}
tmp = Q->front->next;
*e = tmp->data;
Q->front->next = tmp->next;
if(Q->rear == tmp)
Q->rear = Q->front;
free(tmp);
return;
}
대기 열의 헤드 요 소 를 가 져 옵 니 다.
void GetHead(LinkQueue *Q, QElemType *e)
{
if(Q->front == Q->rear)
return;
*e = Q->front->next->data;
return ;
}
대기 열 이 비어 있 는 지 판단 합 니 다.
int QueueEmpty(LinkQueue *Q)
{
if(Q->front == Q->rear)
return TRUE;
return FALSE;
}
대열 을 비우 다.
void ClearQueue(LinkQueue *Q)
{
if(Q->front == Q->rear){
printf("the queue is empty.
");
return;
}
while(Q->front->next){
Q->rear = Q->front->next->next;
free(Q->front->next);
Q->front = Q->front->next;
}
Q->front->next = NULL;
Q->rear = Q->front;
return;
}
대열 의 길 이 를 구하 다.
int QueueLength(LinkQueue Q)
{
int length = 0;
LinkQueue Tmp= Q;
while(Tmp.front != Tmp.rear){
length++;
Tmp.front = Tmp.front->next;
}
return length - 1;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단한 애니메이션 대기열 모델텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.