C语言实现链队列

来源:互联网 发布:中国房地产泡沫知乎 编辑:程序博客网 时间:2024/05/22 16:48
/* * link_queue.h * *  Created on: 2011-9-5 *      Author: liusheng */#ifndef LINK_QUEUE_H_#define LINK_QUEUE_H_#define ElemType int#define TRUE 1#define FALSE 0//队列节点的组成部分typedef struct node{ElemType elem;struct node *next;}node,*queueprt;typedef struct {queueprt font;queueprt rear;}linkqueue;//初始化队列int initlinkqueue(linkqueue *lq) {lq->font = (node *)malloc(sizeof(node));if(lq->font == NULL) return FALSE;    lq->rear = lq->font;    lq->font->next = NULL;    return TRUE;}//向队尾添加数据int addnodetail(linkqueue *lq,ElemType e) {    node *temp;    temp = (node *)malloc(sizeof(node));    if(temp == NULL) return FALSE;    lq->rear->next = temp;    lq->rear = temp;    lq->rear->elem = e;    lq->rear->next = NULL;    return TRUE;}//得到队列的队头int getfontnode(linkqueue *lq,ElemType *e) {    if(lq->font->next == NULL) return FALSE;    *e = lq->font->next->elem;    return TRUE;}//删除队头的数据,并通过e得到删除过的数据的值int deletefontnode(linkqueue *lq,ElemType *e) {node *temp;if(lq->font->next == NULL) return FALSE;if(lq->font->next != lq->rear) {temp = lq->font->next;lq->font->next = temp->next;    *e = temp->elem;} else {*e = lq->rear->elem;lq->rear = lq->font;lq->font->next = NULL;}return TRUE;}//输出队列中的所有节点void printflinkqueue(linkqueue *lq) {node *temp;temp = lq->font->next;while(temp != NULL) {printf("elem = %d ",temp->elem);temp = temp->next;}printf("\n");}#endif /* LINK_QUEUE_H_ *//* * linkqueue.c *  对link_queue.h测试 *  Created on: 2011-9-5 *      Author: liusheng */#include <stdio.h>#include <stdlib.h>#include "link_queue.h"int main(void) {    linkqueue lq;    initlinkqueue(&lq);    //测试入对    addnodetail(&lq,1);    addnodetail(&lq,6);    addnodetail(&lq,4);    addnodetail(&lq,4);    addnodetail(&lq,8);    printflinkqueue(&lq);    ElemType e;    addnodetail(&lq,12);    //测试出队    deletefontnode(&lq,&e);    printf("e = %d\n",e);    //测试得到队头数据    getfontnode(&lq,&e);    printf("e = %d\n",e);    printflinkqueue(&lq);return 0;}//以下是控制台的输出数据elem = 1 elem = 6 elem = 4 elem = 4 elem = 8 e = 1e = 6elem = 6 elem = 4 elem = 4 elem = 8 elem = 12 


原创粉丝点击