程序员面试宝典之数据结构基础----队列的入队与出队
2012-10-03 20:29
302 查看
我的盲点:将队列入队、出队的方向搞反,同时将队列中节点指针的指向弄反。
没有考虑队列出队后,该队列是否为空的情况。
入队时,队列为空要单独处理。
没有考虑队列出队后,该队列是否为空的情况。
入队时,队列为空要单独处理。
#include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; //Notice:队列的数据结构组成,先入队列(即出队列部分)部分为头(first),后入队列部分为尾(rear),队列的链表指针形式是从头指向尾。 // ->(入队列) node1<-node2 <- node3 <- ....<-noden ->(出队列) // 1 1 // rear first typedef struct Node { int data; struct Node *next; }node; typedef struct Queue //notice :队列的数据结构只是包括两个节点指针(头和尾); { node* first; node* rear; }queue; //队列的插入操作。注意:队列是从rear部插入 queue* insert(queue* My_queue,int x) { node* s; s = (node*)malloc(sizeof(node)); s->data = x; s->next = NULL; //分为队列为空与队列非空两种。 if(NULL == My_queue->rear) { My_queue->first = s; My_queue->rear = s; } else { My_queue->rear->next = s; My_queue->rear = s; } return My_queue; } //队列的删除操作。注意:删除是在first部的操作。 queue* del(queue* My_queue) { node* p; int x; //判断队列是否为空 if(My_queue->first == NULL) { printf("Noting to delete!!!WRONG\n"); } else { x = My_queue->first->data; p = My_queue->first; //判断队列是否删除后为空。(易忽略) if(My_queue->first == My_queue->rear) { My_queue->first = NULL; My_queue->rear = NULL; free(p); } else { My_queue->first = My_queue->first->next; free(p); } return My_queue; } }
相关文章推荐
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 程序员面试宝典之数据结构基础----C++两个栈实现一个队列功能
- 栈与队列-等价表达式(数据结构基础 第3周)
- Java之美[从菜鸟到高手演变]之数据结构基础、线性表、栈和队列、数组和字符串
- 程序员面试宝典之数据结构基础-----③单链表的插入
- 数据结构基础(5)--C语言实现循环队列--静态
- 循环队列和链式队列的结构及其基本操作(入队、出队、取队头、查看对内元素)
- 程序员面试宝典(第三版)--队列的建立,测长,打印,入队,出队
- 基础数据结构(栈,队列)
- 程序员面试宝典_第13章_数据结构基础_排序算法小结(1)