码迷,mamicode.com
首页 > 编程语言 > 详细

链表实现队列 c语言

时间:2015-08-07 19:50:22      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:c语言   链表   数据结构   队列   

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define Data_Type int




typedef struct Node{
 Data_Type data;
 struct Node * pNext;
}NODE,*PNODE;




typedef struct LinkQueue{
 //first node
 PNODE front;
 //lash node
 PNODE rear;
}LINKQUEUE,*PLINKQUEUE;




bool isEmpty(PLINKQUEUE);
bool enQueue(PLINKQUEUE,Data_Type);
Data_Type deQueue(PLINKQUEUE);
void traverse(PLINKQUEUE);
PLINKQUEUE initial();




int main(void){
 PLINKQUEUE pLinkQueue = initial();
 enQueue(pLinkQueue,1);
 enQueue(pLinkQueue,2);
 enQueue(pLinkQueue,3);
 enQueue(pLinkQueue,4);
 deQueue(pLinkQueue);
 enQueue(pLinkQueue,5);
 deQueue(pLinkQueue);
 traverse(pLinkQueue);
 return 0;
} 




PLINKQUEUE initial(){
 PLINKQUEUE pLinkQueue = (PLINKQUEUE)malloc(sizeof(LINKQUEUE));
 if(NULL==pLinkQueue){
  exit(-1);
 }else{
  pLinkQueue->front = NULL;
  pLinkQueue->rear = NULL;
  return pLinkQueue;
 }




}




bool isEmpty(PLINKQUEUE pLinkQueue){
 if(pLinkQueue->front == NULL && pLinkQueue->rear == NULL){
  return true;
 }else{
  return false;
 } 
}




bool enQueue(PLINKQUEUE pLinkQueue,Data_Type val){
 PNODE pNew = (PNODE)malloc(sizeof(NODE));
 if(NULL==pNew){
  return false;
 }
 pNew->data = val;
 pNew->pNext = NULL;
 if(isEmpty(pLinkQueue)){
  pLinkQueue->front = pLinkQueue->rear = pNew;
 }else{
  pLinkQueue->rear->pNext = pNew;
  pLinkQueue->rear = pNew;
 }
 return true;
 
} 




void traverse(PLINKQUEUE pLinkQueue){ 
 PNODE pTemp=pLinkQueue->front;
 while(pTemp!=NULL){
  printf("%d\n",pTemp->data);
  pTemp = pTemp->pNext;
 }
} 




Data_Type deQueue(PLINKQUEUE pLinkQueue){
 PNODE pTemp =pLinkQueue->front;
 Data_Type temp;
 if(isEmpty(pLinkQueue)){
  exit(-1);
 }
 //The Queue just has one node
 if(pLinkQueue->front == pLinkQueue->rear){
  pLinkQueue->front = pLinkQueue->rear = NULL;
 }else{
  pLinkQueue->front=pLinkQueue->front->pNext;
 }
 temp = pTemp->data;
 free(pTemp);
 return temp;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

链表实现队列 c语言

标签:c语言   链表   数据结构   队列   

原文地址:http://blog.csdn.net/u013578413/article/details/47343217

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!