数据结构——队列的C语言实现
生活随笔
收集整理的這篇文章主要介紹了
数据结构——队列的C语言实现
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.什么是隊(duì)列?
2.隊(duì)列的抽象數(shù)據(jù)類型描述
3.隊(duì)列之順序表的C語(yǔ)言實(shí)現(xiàn)
#include<stdio.h> #include<stdlib.h>#define MaxSize 5 #define ElementType int #define ERROR -1typedef struct QNode *Queue; struct QNode{ElementType Data[MaxSize];int rear;int front; }; Queue PtrQ;//1.初始化 Queue MakeEmpty() {Queue PtrQ;PtrQ=(Queue)malloc(sizeof(struct QNode));PtrQ->rear=0;PtrQ->front=0;return PtrQ; }//2.入隊(duì)列 void AddQ(ElementType item,Queue PtrQ) {if((PtrQ->rear+1)%MaxSize==PtrQ->front){printf("隊(duì)列滿\n");return;}PtrQ->rear=(PtrQ->rear+1)%MaxSize;PtrQ->Data[PtrQ->rear]=item; }//3.出隊(duì)列 ElementType DeleteQ(Queue PtrQ) {if(PtrQ->rear==PtrQ->front){printf("隊(duì)列為空,無(wú)法刪除\n");return ERROR;}PtrQ->front=PtrQ->front+1;return PtrQ->Data[PtrQ->front]; }//4.求隊(duì)列長(zhǎng)度 int Length(Queue PtrQ) {return PtrQ->rear-PtrQ->front; }int main() {int i,LengthQ;PtrQ=MakeEmpty();AddQ(24,PtrQ);AddQ(34,PtrQ);AddQ(45,PtrQ);AddQ(76,PtrQ);AddQ(89,PtrQ);LengthQ=Length(PtrQ);printf("隊(duì)列長(zhǎng):%d\n",LengthQ);for(i=PtrQ->front+1;i<PtrQ->rear+1;i++){printf("%d ",PtrQ->Data[i]);}printf("\n");printf("刪除:%d\n",DeleteQ(PtrQ));LengthQ=Length(PtrQ);printf("隊(duì)列長(zhǎng):%d\n",LengthQ);for(i=PtrQ->front+1;i<PtrQ->rear+1;i++){printf("%d ",PtrQ->Data[i]);} printf("\n");return 0; }4.隊(duì)列之鏈?zhǔn)奖淼腃語(yǔ)言實(shí)現(xiàn)
#include<stdio.h> #include<stdlib.h>#define ElementType int #define ERROR -1typedef struct QNode *Queue; struct QNode{ElementType Data;Queue Next; };//1.初始化 Queue MakeEmpty() {Queue PtrQ;PtrQ = (Queue)malloc(sizeof(struct QNode));PtrQ->Next=NULL;return PtrQ; }//2.入隊(duì)列 Queue AddQ(ElementType item,Queue Rear) {Queue PtrQ;PtrQ=(Queue)malloc(sizeof(struct QNode));PtrQ->Data=item;PtrQ->Next=NULL;Rear->Next=PtrQ;Rear=PtrQ;return Rear; }//3.出隊(duì)列 Queue DeleteQ(Queue Front,Queue Rear) {Queue PtrQ;if(Front->Next==NULL){printf("隊(duì)列為空\(chéng)n");return Rear;}PtrQ=Front->Next;printf("刪除元素:%d\n",PtrQ->Data);Front->Next=PtrQ->Next;if(PtrQ==Rear){Rear=Front;}free(PtrQ);return Rear; }//4.求隊(duì)列長(zhǎng)度 int Length(Queue Front,Queue Rear) {int i=0;while(Front!=Rear){i++;Front=Front->Next;}return i; }int main() {int i,length;Queue Rear,Front;Front=Rear=MakeEmpty();Rear=AddQ(23,Rear);Rear=AddQ(51,Rear);Rear=AddQ(78,Rear);length=Length(Front,Rear);printf("隊(duì)列長(zhǎng):%d\n",length);Queue PtrQ1=Front->Next;for(i=0;i<length;i++){printf("%d ",PtrQ1->Data);PtrQ1=PtrQ1->Next;}printf("\n");Rear=DeleteQ(Front,Rear);length=Length(Front,Rear);printf("隊(duì)列長(zhǎng):%d\n",length);Queue PtrQ2=Front->Next;for(i=0;i<length;i++){printf("%d ",PtrQ2->Data);PtrQ2=PtrQ2->Next;}printf("\n");return 0; }總結(jié)
以上是生活随笔為你收集整理的数据结构——队列的C语言实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Unity3D-C#脚本介绍
- 下一篇: leaf 叶子(张量)