데이터 구조 - 대기 열 - 대기 열 초기 화, 대기 열, 대기 열 머리 요 소 를 가 져 오고 대기 열 꼬리 요 소 를 가 져 오 며 대기 열 에 있 는 유효 요소 의 개 수 를 가 져 오고 빈 칸 을 판단 하 며 대기 열 을 소각 합 니 다.

2209 단어 데이터 구조
대기 열의 구조 체:

typedef QNode* QDataType;

//     :     
typedef struct QNode
{
	struct QNode* pNext;
	QDataType data;
}QNode;

//       
typedef struct Queue
{
	QNode *head;		//         
	QNode *last;		//          
}Queue;

함수 기능 집합:
//       
void QueueInit(Queue* q); 

//       
void QueuePush(Queue* q, QDataType data); 

//       
void QueuePop(Queue* q); 

//          
QDataType QueueFront(Queue* q); 

//          
QDataType QueueBack(Queue* q); 

//             
int QueueSize(Queue* q); 

//         ,          ,      0 
int QueueEmpty(Queue* q); 

//      
void QueueDestroy(Queue* q); 

대기 열 초기 화:
//     
void QueueInit(Queue* q)
{
	q->head = q->last = NULL;
}

 대기 열 끝 에 들 어 갑 니 다 (대기 열 에 들 어 갑 니 다):
//         //   
void QueuePush(Queue* q, QDataType data)
{
	QNode *node = (QNode *)malloc(sizeof(QNode));
	node->data = data;
	node->pNext = NULL;
	if (q->head == NULL)
	{
		q->head = node;
		q->last = node;
	}
	else
	{
		q->last->pNext = node;
		q->last = node;
	}
}

파티 의 첫 번 째 대기 열 (대기 열):
//         //   
void QueuePop(Queue* q)
{
	QNode* node = (QNode*)malloc(sizeof(QNode));
	node = q->head;
	free(q->head);
	q->head = node;

	// last           
	if (q->head == NULL) {
		q->last = NULL;
	}
}

대기 열 머리 요소 가 져 오기:
//          
QDataType QueueFront(Queue* q)
{
	return q->head->data;
}

파티 끝 요소 가 져 오기:
//          
QDataType QueueBack(Queue* q)
{
	return q->last->data;
}

대기 열 에 있 는 유효한 요소 갯 수 가 져 오기:
//             
int QueueSize(Queue* q)
{
	int size;
	for (QNode* c=q->head ; c !=NULL; c=c->pNext)
	{
		size++;
	}
	return size;
}

띄 우기:
//         ,          ,      0 
int QueueEmpty(Queue* q)
{
	if (q->head == NULL)
		return 1;
	else
		return 0;
}

대기 열 삭제:
//      
void QueueDestroy(Queue* q)
{
	QNode* node;
	for ( node =q->head; node !=NULL; node=node->pNext)
	{
		free(node);
	}
	q->head = NULL;
	q->last = NULL;
}

좋은 웹페이지 즐겨찾기