链队列的基本操作

xiaoxiao2025-11-01  19

#include<bits/stdc++.h> #define STACK_INIT_SIZE 100 using namespace std; typedef struct QNode { int data; struct QNode *next; } QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; } LinkQueue; int InitQueue(LinkQueue &Q) { Q.front=Q.rear=(QueuePtr)malloc((sizeof(QNode))); if(!Q.front) return -1; Q.front->next=NULL; return 1; } int DestroyQueue(LinkQueue &Q) { while (Q.front) { Q.rear=Q.front->next; free(Q.front); Q.front=Q.rear; } return 1; } int ClearQueue(LinkQueue &Q) { QueuePtr q,p=Q.front->next; Q.rear=Q.front; Q.front->next=NULL; while (p) { q=p->next; free(p); p=q; } return 1; } int QueueEmpty(LinkQueue Q) { return Q.front==Q.rear? true:false; } int QueueLength(LinkQueue Q) { int len=0; QueuePtr p=Q.front->next; while (p) { len++; p=p->next; } return len; } int EnQueue(LinkQueue &Q,int e) { QueuePtr p=(QueuePtr)malloc(sizeof(QNode)); if(!p) return -1; p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return 1; } int DeQueue(LinkQueue &Q,int &e) { if(Q.front==Q.rear) return -1; QueuePtr p=Q.front->next; e=p->data; Q.front->next=p->next; if(p==Q.rear) Q.rear=Q.front; free(p); return 1; } int GetHead(LinkQueue &Q,int &e) { if(Q.front==Q.rear) return -1; QueuePtr p=Q.front->next; e=p->data; return 1; } int QueueTraverse(LinkQueue Q) { QueuePtr p=Q.front->next; while(p) { printf("%d ",p->data); p=p->next; } printf("\n"); return 1; } int main() { return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-5038857.html

最新回复(0)