`
- 浏览:
11716095 次
- 性别:
- 来自:
深圳
-
队的思想:先进先出。其他的东西不讲了,下面展示代码。
队顺序存储的实现:
# include <stdlib.h>
# include <iostream.h>
//宏定义
# define CHUZHI 10//初始队的大小
# define ZENGZHI 5 //为了不出现队溢出而出现
//队头的数据类型
struct queue
{
int * top;//存放队的尾
int * base;//存放队的头
int max;//存放队的大小
};
//初始化队
void chushihua(struct queue &q)
{
q.base=(int *)malloc(10 * sizeof(int));//给队开辟空间
if(q.base)//开辟是否成功
{//队头元素赋初值
q.top=q.base;
q.max=CHUZHI;
}
else
cout<<"内存空间不足!请关闭一些程序后在进行此操作!\n";
}
//进队函数
void inqueue(struct queue &q,int e)
{//判断队是否满了
if(q.top-q.base>=q.max)
{//队满后的操作
q.base=(int *)realloc(q.base,5+q.max);
q.top=q.base+q.max;
q.max=q.max+ZENGZHI;
}
*q.top=e;//元素进队
q.top++;//top指向队顶
cout<<"进队操作已完成!\n";
}
//出队函数
void outqueue(struct queue &q,int &e)
{
if(q.base!=q.top)
{//队不为空的操作
e=*(q.base);//元素出队
cout<<e<<"\n";//输出元素
q.base++;//队底地址的改变
}
else
cout<<"此队为空队!\n";
}
//主函数
void main()
{
int e;//存放出队和进队的值
int option;//存放用户的选项
struct queue q;//构造一个队
chushihua(q);//队的初始化操作
e=0;
option=0;
while(option!=3)
{
cout<<"\n\n\n\n 菜单\n";
cout<<" 1、进队\n";
cout<<" 2、出队\n";
cout<<" 3、退出\n";
cout<<"\n请选择操作码:";
cin>>option;
switch(option)
{
case 1:
cout<<"请输入进队的元素值:";
cin>>e;
inqueue(q,e);
break;
case 2:
outqueue(q,e);
break;
}
}
}
队的链式存储
# include <stdlib.h>
# include <iostream.h>
//定义结点数据类型
typedef struct Queue
{
int data;//存放数据
struct Queue * next;//存放下一个结点的地址
}*queue;
//定义头结点和尾结点的类型
typedef struct
{
queue top;//存放尾
queue base;//存放头
}Head;
//队头的初始化
void chushihua(Head &q)
{
q.base=(queue)malloc(sizeof(struct Queue));//开辟空间
q.top=q.base;//给对头中的元素赋初值
}
//进队操作
void inqueue(Head &q,int e)
{
queue p;//定义一个存放结点类型的指针
p=(queue)malloc(sizeof(struct Queue));//为p开辟空间
p->data=e;//把进队的元素存放在p所指空间的data项中
(q.top)->next=p;//把p插入到队中
q.top=p;
cout<<"进队成功!\n";
}
//出队操作
void outqueue(Head &q,int &e)
{
if(q.base!=q.top)
{//队不为空的操作
q.base=q.base->next;//元素出队,且base指向下一个地址
e=q.base->data;
cout<<"出队元素为:"<<e<<"\n";
}
else
{
cout<<"此队为空队!\n";
}
}
void main()
{
Head q;//定义一个队头
int e;//存放进队和出队的数据
int option;//存放用户的操作
chushihua(q);//队的初始化
option=0;
while(option!=3)
{
cout<<"\n\n\n\n 菜单\n";
cout<<" 1、进栈\n";
cout<<" 2、出栈\n";
cout<<" 3、退出\n";
cout<<"\n\n请选择您的操作:";
cin>>option;
switch(option)
{
case 1:
cout<<"请输入进队元素值:";
cin>>e;
inqueue(q,e);
break;
case 2:
outqueue(q,e);
break;
case 3:
break;
default:
break;
}
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
线性表的顺序存储和链式存储实现
程序中,用到了线性表的线性表的顺序存储和链式存储,实现了存储10个元素,并且用到冒泡排序,实现了偶数求和,统计偶数的个数。呵呵……
前面上传了线性表的顺序存储和链式存储,是为了方便学习数据结构的(喜欢用c语言描述版本)的朋友,现在把栈的顺序存储和链式存储上传,希望为同学们提供一个系统的学习数据结构的地方。
中国大学MOOC上浙大的《数据结构》课程队列顺序存储&链式存储实现的代码。包括队列创建、入队、出队。
该文档饱含了数据结构课程中关于线性表的十二个基本操作的实现。对于不同的线性表的存储结构,利用C语言分别实现相应的算法
存储结构定义(包括顺序存储和二叉链表)及各基本操作的实现 三.测试方案。包括详细的测试函数 四.测试结果。对所有操作的测试过程中二叉树的变化截图。 五.二叉树各基本操作时间复杂度与存储结构特点分析及对算法的...
C语言中栈的顺序存储和链式存储
熟练掌握线性表的基本操作在顺序存储和链式存储上的实现; " "验 "2. 以线性表的各种操作(建立、插入、删除等)的实现为重点; " "目 "3. 掌握线性表的动态分配顺序存储结构的定义和基本操作的实现; " "的 " " ...
实现线性表的顺序存储结构、链式存储结构,以及定义在上述结构的基本操作,栈的顺序存储结构、链式存储结构,以及定义在上述结构的基本操作
队列是限定仅在表尾进行插入,在表头进行删除操作的线性表。包括:初始化、判空、判满、入队、出队、得到队头元素、队列长度、清空、销毁、遍历。修正了一些问题。
栈的顺序与链式存储结构与操作,已ac过,放心下载
用C实现,数据结构线性表的顺序和链式实现.
顺序表,链表的插入删除(适合初学者).....
数据结构线性表操作的一个实验: 实验要求 顺序和链式存储的线性表的创建、获取元素、插入和删除元素等基本操作的实现。 题目要求: 输入:一组整型数据A,一组...要求:A和B使用两种存储方式:顺序存储和链式存储。
链表的原地逆置(包括顺序存储方式和链式存储方式)。 本资源包括通过了vs2005的测试可以正常运行。
数据结构与算法(C语言)线性表(顺序存储、链式存储) 定义线性表节点的结构.pdf
掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现。实验内容:栈的顺序表示和实现编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能。初始化顺序栈插入一个元素删除栈顶...
算法与数据结构(一)线性表的顺序存储与链式存储(Swift版) 定义线性表节点的结构.pdf
线性表的链式存储结构.doc 线性表的链式存储结构.doc 线性表的链式存储结构.doc
2、 掌握线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度等运算在顺序存储结构和链式存储结构上的实现。 3、 通过本章实验帮助学生加深对C语言的使用(特别是函数的参数调用、指针类型的应用)。 ...