首页 / 算法 / 《数据结构和算法:链表实现队列》
《数据结构和算法:链表实现队列》
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了《数据结构和算法:链表实现队列》,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3716字,纯文字阅读大概需要6分钟。
内容图文
![《数据结构和算法:链表实现队列》](/upload/InfoBanner/zyjiaocheng/615/28652b7d77ef4722b6e6a1f725dafed8.jpg)
写出先入先出队列的结构体Queue定义,并实现以下函数:(15分)
1,Queue *create(int size):创建一个能放size个int类型的队列,返回队列的指针。
2,int put(Queue *queue, int value):将value入队,返回0表示成功,-1表示出错。
3,int get(Queue *queue, int *pvalue):将数据出队并存入pvalue,返回0表示成功,-1表示出错。
typedef struct node_t { int data; struct node_t *next; }nodeList; typedef struct queue_t { nodeList *head; nodeList *end; int qSize; }Queue;
Queue *create(int size) { Queue *queue = NULL; nodeList *node = NULL; int i = 0; queue = (Queue *)malloc(sizeof(Queue)); if(NULL == queue) { perror("queue malloc:"); return NULL; } memset(queue,0,sizeof(Queue)); node = (nodeList *)malloc(sizeof(nodeList)); if(NULL == node) { perror("node malloc:"); return NULL; } memset(node,0,sizeof(nodeList)); queue->head = node; queue->end = node; for(i=1;i<size;i++) { node = (nodeList *)malloc(sizeof(nodeList)); if(NULL == node) { perror("node malloc:"); return queue; } memset(node,0,sizeof(nodeList)); node->data = i; queue->end->next = node; queue->end = node; } queue->qSize = size; return queue; }
int put(Queue *queue, int value) { nodeList *node = NULL; node = (nodeList *)malloc(sizeof(nodeList)); if(NULL == node) { perror("malloc:"); return -1; } memset(node,0,sizeof(nodeList)); node->data = value; queue->qSize++; if(NULL == queue->head) { queue->head = node; queue->end = node; } else { queue->end->next = node; } return 0; }
int get(Queue *queue, int *pvalue) { nodeList *node = NULL; if(queue->qSize == 0) { printf(" queue is empty \n"); *pvalue = -1; return -1; } *pvalue = queue->head->data; node = queue->head->next; free(queue->head); queue->head = node; queue->qSize--; return 0; }
测试:
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct node_t { int data; struct node_t *next; }nodeList; typedef struct queue_t { nodeList *head; nodeList *end; int qSize; }Queue; Queue *create(int size) { Queue *queue = NULL; nodeList *node = NULL; int i = 0; queue = (Queue *)malloc(sizeof(Queue)); if(NULL == queue) { perror("queue malloc:"); return NULL; } memset(queue,0,sizeof(Queue)); node = (nodeList *)malloc(sizeof(nodeList)); if(NULL == node) { perror("node malloc:"); return NULL; } memset(node,0,sizeof(nodeList)); queue->head = node; queue->end = node; for(i=1;i<size;i++) { node = (nodeList *)malloc(sizeof(nodeList)); if(NULL == node) { perror("node malloc:"); return queue; } memset(node,0,sizeof(nodeList)); node->data = i; queue->end->next = node; queue->end = node; } queue->qSize = size; return queue; } int put(Queue *queue, int value) { nodeList *node = NULL; node = (nodeList *)malloc(sizeof(nodeList)); if(NULL == node) { perror("malloc:"); return -1; } memset(node,0,sizeof(nodeList)); node->data = value; queue->qSize++; if(NULL == queue->head) { queue->head = node; queue->end = node; } else { queue->end->next = node; } return 0; } int get(Queue *queue, int *pvalue) { nodeList *node = NULL; if(queue->qSize == 0) { printf(" queue is empty \n"); *pvalue = -1; return -1; } *pvalue = queue->head->data; node = queue->head->next; free(queue->head); queue->head = node; queue->qSize--; return 0; } int getQueueSize(Queue *queue) { return queue->qSize; } int test_queue(void) { Queue *queue = NULL; int data = -1; int initSize = 5; queue = create(initSize); printf("size : %d \n",getQueueSize(queue)); //size : 5 for(int i=0;i<initSize+1;i++) { get(queue,&data); printf("data : %d \n",data); //0 1 2 3 4 queue is empty -1 } printf("size : %d \n",getQueueSize(queue)); // 0 put(queue,10); printf("size : %d \n",getQueueSize(queue)); //1 put(queue,11); printf("size : %d \n",getQueueSize(queue)); //2 get(queue,&data); printf("data : %d \n",data); //10 get(queue,&data); printf("data : %d \n",data); //11 printf("size : %d \n",getQueueSize(queue)); //0 } int main(void) { test_queue(); }
内容总结
以上是互联网集市为您收集整理的《数据结构和算法:链表实现队列》全部内容,希望文章能够帮你解决《数据结构和算法:链表实现队列》所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。