c语言队列如何表示,队列的链式表示和实现(C语言)
#include
#include
#define OK 1;
#define ERROR 0;
#define OVERFLOW 0;
#define TURE 1;
#define FALSE 0;
typedef int Status;
typedef char QElemType; //隊型數據
//鏈隊中結點的定義
typedef struct QNode {
QElemType data; //數據域
struct QNode *next; //指針域
}QNode,*QueuePtr;
//鏈隊的定義
typedef struct {
QueuePtr front; //隊頭指針
QueuePtr rear; //隊尾指針
}LinkQueue;
//鏈隊的初始化
Status InitQueue(LinkQueue *queue){
queue->front=queue->rear=(QueuePtr)malloc(sizeof(QNode));
if(!queue->front) return OVERFLOW;
queue->front->next=NULL; //頭結點next域置空
return OK;
}
//鏈隊的銷毀
Status DestroyQueue(LinkQueue *queue){
QNode *p;
while(queue->front){
p=queue->front->next;
free(queue->front);
queue->front=p;
}
return OK;
}
//元素入隊
Status EnQueue(LinkQueue *queue,QElemType elem){
QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
if(!p) return OVERFLOW;
p->data=elem;
p->next=NULL;
queue->rear->next=p;
queue->rear=p;
return OK;
}
//元素出隊
Status DeQueue(LinkQueue *queue,QElemType *elem){
if(queue->front==queue->rear) return ERROR;
QueuePtr p=queue->front->next; //p指向首元(隊頭元素)
*elem=p->data; //出隊元素的值保存到elem
queue->front->next=p->next;
if(p==queue->rear) queue->rear=queue->front; //如果出隊的是最后一個元素
free(p);
return OK;
}
//取隊頭元素
QElemType GetHead(LinkQueue queue){
if(queue.front==queue.rear) return ERROR;
return queue.front->next->data;
}
int main(void){
LinkQueue queue1; //定義一個鏈隊
//初始化
Status initQueueResult = InitQueue(&queue1);
printf("隊列queue1初始化結果:%d\n",initQueueResult);
//元素入隊
QElemType elem1='Y',elem2='C';
Status enResult = EnQueue(&queue1,elem1);
printf("入隊執行結果:%d\n",enResult);
EnQueue(&queue1,elem2); //將elem2也入隊
printf("隊尾元素值:%c\n",queue1.rear->data);
//元素出隊
QElemType elem3; //出隊的數據放入elem3
Status deResult = DeQueue(&queue1,&elem3);
printf("出隊執行結果:%d\n",deResult);
printf("出隊元素值:%c\n",elem3);
printf("隊尾元素值:%c\n",queue1.rear->data);
//取隊頭元素
QElemType queueHeadValue = GetHead(queue1);
printf("獲取隊頭元素值:%c\n",queueHeadValue);
//鏈隊銷毀
Status destroyResult = DestroyQueue(&queue1);
printf("鏈隊銷毀結果:%d\n",destroyResult);
printf("\nEND");
return 0;
}
標簽:return,隊列,next,queue,queue1,鏈式,front,C語言,rear
來源: https://www.cnblogs.com/petitepluie/p/14599401.html
總結
以上是生活随笔為你收集整理的c语言队列如何表示,队列的链式表示和实现(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言使能,什么是锁存使能输入
- 下一篇: 对c语言这门课程的认识,一路走来,浅谈c