链式的队列的创建、插入、删除、遍历、取队首元素
2016-10-24 10:07
881 查看
链式的队列的创建、插入、删除、遍历、取队首元素上午操作。
我们今天将的方式是比较简单的方式,没有动态的分配空间。
我们今天将的方式是比较简单的方式,没有动态的分配空间。
#include <stdio.h> typedef struct { int queue[100]; int front; int rear; } sqqueue; //创建一个空的队列 int initqueue(sqqueue *sq) { if(sq!=NULL) { sq->front=sq->rear=0; return 1; } return 0; } //入队(把新元素加到队尾) int enqueue(sqqueue *sq,int d) { // if(sq==NULL) { printf("队列未创建,入队失败!\n"); return 0; } if(sq->rear>=100) { printf("队列已满,入队失败!\n"); return 0; } else { sq->queue[sq->rear]=d; sq->rear=sq->rear+1; printf("入栈的元素是%d\n",d); return 1; } } int outqueue(sqqueue *sq,int d) { if(sq==NULL) { printf("队列未创建,出队失败!\n"); return 0; } if(sq->front==sq->rear) { printf("队列为空,出队失败!\n"); return 0; } else { d=sq->queue[sq->front]; sq->front++; printf("出栈的元素是%d\n",d); return 1; } } int traverseQueue(sqqueue *sq) { int d; if(sq==NULL) { printf("队列未创建,遍历失败!\n"); return 0; } if(sq->front==sq->rear) { printf("队列为空,遍历失败!\n"); return 0; } else { int i=sq->front; while(i!=sq->rear) { d=sq->queue[i]; printf("%d->",d); i++; } return 1; } } int getHead(sqqueue *sq,int *d) { if(sq==NULL) { printf("队列未创建,遍历失败!\n"); return 0; } if(sq->front==sq->rear) { printf("队列为空,遍历失败!\n"); return 0; } *d=sq->queue[sq->front]; printf("%d\n",*d); printf("取队首元素成功!\n"); return 1; } void main() { sqqueue sq; int choice,data,d; if(initqueue(&sq)==1) printf("队列创建成功!\n"); else printf("队列创建失败!\n"); while(1) { printf("-----------------------------------------\n"); printf(" 1、入栈\n"); printf(" 2、出栈\n"); printf(" 3、遍历\n"); printf(" 4、取队首元素\n"); printf(" 5、退出\n"); printf("-----------------------------------------\n"); printf("请输入你的选择:\n"); scanf("%d",&choice); switch(choice) { case 1: printf("请输入入栈元素:\n"); scanf("%d",&data); if(enqueue(&sq,data)) { printf("%d入栈成功!\n",data); } break; case 2: if(outqueue(&sq,d)) printf("出栈成功!\n"); break; case 3: if(traverseQueue(&sq)) printf("遍历成功!\n"); break; case 4: getHead(&sq,&d); break; case 5: return 0; } } }
相关文章推荐
- 单向链表的创建、遍历、求长、判存、判空、插入、删除、查找(按位置或元素)、合并
- 单向循环链表创建、遍历、插入、删除、查找(按位置,按元素值)、清空、销毁
- malloc的链表,创建链表,遍历链表,插入节点,删除节点
- stl 中 容器 set 类插入,删除,遍历,其中存储的元素为基础类型 int (1)
- 链式队列插入元素实现
- C语言中,链表的创建,插入,删除,遍历,求链表长度,排序等
- 创建,添加,插入和删除DOM元素
- 用结构体实现链表的创建、遍历、结点插入、结点删除
- 03链表的创建、插入、删除、遍历、排序
- C++单链表的操作(创建,删除,打印,遍历,插入)
- 编程菜鸟的日记-初学尝试编程-顺序表的类定义及其基本操作算法(创建表、元素插入、元素删除、顺序查找、测表空、求表长、输出等)
- 单链表创建-遍历-排序-插入-删除-逆序操作
- 链表的基础操作总结(链表创建,插入,删除,遍历等等)
- 顺序表中静态顺序表的创建、插入和删除一个元素(源码分析)
- 带头节点循环单链表的操作(创建,保序插入,指定插入,删除指定表元,删除相同元素,统计某元素表元个数)
- 第3章 栈和队列——循环队列的元素的插入和删除
- 队列用链表实现(建立,插入新元素,删除元素,读取元素,全部删除,全部读出,判断是否为空,清空)
- 单链表的创建、遍历、插入、删除、查找、逆转
- 链式队列元素删除实现
- C++单链表的动态创建,查找,遍历,删除,插入,添加,排序