数据结构 实验3 顺序栈的基本操作
“数据结构 实验3 顺序栈的基本操作”相关的资料有哪些?“数据结构 实验3 顺序栈的基本操作”相关的范文有哪些?怎么写?下面是小编为您精心整理的“数据结构 实验3 顺序栈的基本操作”相关范文大全或资料大全,欢迎大家分享。
数据结构 - 顺序栈的基本操作
#include # define STACK_INIT_SIZE 100 # define STACKINCREMENT 10 typedef struct { int * base; int * top; int stacksize;//当前栈可使用的最大容量 } SqStack; void InitStack(SqStack &S)//构造一个空栈 { S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int)); if(!S.base) {cout<<\存储分配失败!!!\ else { S.top=S.base; S.stacksize=STACK_INIT_SIZE; cout<<\构造成功!!!\ } } void Push(SqStack &S,int e)//插入元素e为栈顶元素 { if(S.top-S.base>=S.stacksize) { S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int)); if(!S.base) cout<<\存储分配失败!!!\ else { S.stacksize+=STACKINCREMENT; S.top=S.base+S.stacksize; } } *S.top++=e; } void DisplayStack(SqStack &S) //从栈底到栈顶逐次显示栈中的元素 { int *p; p=S.base;
实验3顺序栈的基本操作
顺序栈的基本操作实验报告
学院:应用科技学院 专业:电子信息工程 姓名:林三德 学号:120352010067 年级:2010级 时间:2011-11-7 一:实验目的
1)熟悉栈的定义和栈的基本操作。
2)掌握顺序结构存储栈和链接存储栈的基本运算。
3)加深对栈结构的理解,逐步培养解决实际问题的能力。
二:实验要求
1)调用进栈函数建立一个栈。 2)读取栈顶元素。 3)从栈中删除元素。 4)输出栈中德所有元素。
注意:每完成一个步骤就必须及时输出栈中的元素。
三:概要设计
1)编写栈的基本操作函数。
①进栈函数 Status Push(SqStack *S, SElemType e) ②出栈函数 Status Pop(SqStack *S,SElemType *e) ③输出栈元素 OutputStack(SqStack *S) 2)本程序包出栈函数含6个函数。
? 主函数 main() ? ? ? ?
进栈函数PushStack() 出栈函数PopStack()
取栈顶元素Ge
《数据结构》实验二 栈和队列
《数据结构》实验指导及报告书
2014 / 2015 学年 第 1学期
姓 名: 学 号: 班 级: 指导教师:徐江
计算机科学与工程学院
2014
实验二 栈和队列
一、实验目的
1、掌握栈的结构特性及其入栈,出栈操作;
2、掌握队列的结构特性及其入队、出队的操作,掌握循环队列的特点及其操作。
二、实验内容和要求
1、阅读下面程序,将函数Push和函数Pop补充完整。要求输入元素序列1 2 3 4 5 e,运行结果如下所示。
#include #define STACK_INT_SIZE 10 /*存储空间初始分配量*/ #define STACKINCREMENT 5 /*存储空间分配增量*/ typedef int ElemType; /*定义元素的类型*/ typedef struct{ ElemType *base; ElemType *top; int stacksize; /*当前已分配的存储空间*/ }SqStack; int InitStack(SqStack
数据结构栈的应用
实验三 栈的应用(回文判断及数制转换)(2学时)
1.实验目的:掌握栈与队列的基本操作,并对其进行简单应用。 2.实验内容:
(1)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Right”,否则
输出“Wrong”。
(2)编写程序,把十进制正整数转换为n(n可以为2、8、16等等)进制数输出。 注意:转换必须用书上P48页算法3.1实现,其他方法不给分;基本操作的算法部
分见书上P46-P47页。
3.实验准备:熟悉栈和队列的特点及基本操作。 预习要求:
事先预习书上P46—P47页有关栈的操作,包括: 1、如何定义栈结构; 2、如何初始化一个空栈; 3、如何获取栈顶元素; 4、如何让栈顶元素出栈; 5、如何将数据元素压入栈(进栈)
项目介绍: 栈是一种重要的线性表,它的插入和删除都在表尾一端进行。该实验帮助理解栈的概念,加深对栈的“后进先出”特性的理解。
4.实验步骤:(1
《数据结构》实验二 栈和队列
《数据结构》实验指导及报告书
2014 / 2015 学年 第 1学期
姓 名: 学 号: 班 级: 指导教师:徐江
计算机科学与工程学院
2014
实验二 栈和队列
一、实验目的
1、掌握栈的结构特性及其入栈,出栈操作;
2、掌握队列的结构特性及其入队、出队的操作,掌握循环队列的特点及其操作。
二、实验内容和要求
1、阅读下面程序,将函数Push和函数Pop补充完整。要求输入元素序列1 2 3 4 5 e,运行结果如下所示。
#include #define STACK_INT_SIZE 10 /*存储空间初始分配量*/ #define STACKINCREMENT 5 /*存储空间分配增量*/ typedef int ElemType; /*定义元素的类型*/ typedef struct{ ElemType *base; ElemType *top; int stacksize; /*当前已分配的存储空间*/ }SqStack; int InitStack(SqStack
数据结构查找实验顺序、折半
#include typedef int Elemtype; void caidan() //菜单函数 { printf(\欢迎来到查找实验!\\n\ printf(\实验内容:\\n\ printf(\1)建立一个无序表并实现其上的顺序查找;\\n\ printf(\2)建立一个有序表并实现其上的折半查找(用递归和非递归两种算法实现)。\\n\ printf(\ printf(\顺序查找·····\\n\ printf(\折半查找递归···\\n\ printf(\折半查找非递归··\\n\ printf(\退出·······\\n\ printf(\ printf(\请选择:\} int SeqSeach(Elemtype a[],int n, Elemtype key) //顺序查找 { int i; for (i=0;i if (key==a[i]) { return i+1; } } return 0; } void shuchu(Elemtype a[]) //输出函数 { int i; printf(\数组里的数据:\\n\ for (i=0
数据结构练习3(栈和队列)
数据结构练习(栈和队列)
一、选择题
1.有5个元素a,b,c,d,e依次进栈,允许任何时候出栈,则可能的出栈序列是 C 。
A.baecd B.dceab
C.abedc
D.aebcd
2.下列有关递归的叙述,不正确的是 B 。
A.在计算机系统内,执行递归函数是通过自动使用栈来实现的。
B.在时间和空间效率方面,递归算法比非递归算法好。 C.递归函数的求解过程分为递推(进栈)和回推(出栈)两个阶段。
D.在递归函数中必须有终止递归的条件。 3.栈和队列均属于哪一种逻辑结构 A 。
A.线性结构 B.顺序结构 C.非线性结构 D.链表结构
4.设输入元素为1、2、3、P和A,输入次序为123PA,元素经过栈后得到各种输出序列,则可以作为高级语言变量名的序列有 D 种。
A.4
B.5
C.6
D.7
5.一个队列的入队序列为a,b,c,d,则该队列的输出序列是
B 。
A.dcba B.abcd C.adcb
D.cbda
数据结构 实验二:单链表的基本操作
实验二:单链表的基本操作
一、【实验目的】
1、理解和掌握单链表的类型定义方法和结点生成方法。 2、掌握建立单链表和显示单链表元素的算法。 3、掌握单链表的查找、插入和删除算法 二、【实验内容】 1、建立一个整形数的单链表,手动输入10个数,并从屏幕显示单链表元素列表。 2、从键盘输入一个数,查找在以上创建的单链表中是否存在该数;如果存在,显示它的位置;如果不存在,给出相应提示。 3、删除上述单链表中指定位置的元素。
以下是程序部分代码,请调试并补充使之正确运行:
1.LinList.h
typedef struct Node {
DataType data; struct Node *next; } SLNode;
void ListInitiate(SLNode **head) /*初始化*/ {
/*如果有内存空间,申请头结点空间并使头指针head指向头结点*/ if((*head = (SLNode *)malloc(sizeof(SLNode))) == NULL) exit(1); (*head)->next = NULL; /*置链尾标记NULL */ }
int ListLength(SLNo
数据结构-实验2-链表的基本操作
实验2链表的基本操作
一、 需求分析 1,初始化链表
2,调用插入函数建立一个链表 3,链表的插入和删除 4,链表元素的查找
4,将链表分为奇链表和偶链表 5,链表的逆置
二、 概要设计
1. 基础题
1) 编写链表基本操作函数
typedefstructlist
{
Int data;
Struct list* next }LIST;
LIST* InitList()
//初始化
//向链表指定位置插入元素
LIST* InsertList(LIST * L,intitem,intre)
LIST* InsertOrderList(LIST *L,intitem) //向有序链表指定位置插入元素 void FindList(LIST*L, intitem)//查找链表中的元素 void display(LIST *L)//显示链表
void divide(LIST* La, LIST *Lb)//拆分链表 LIST * turn(LIST *L)//转置链表
2) 调用上述函数实现下列操作,操作步骤如下。 A. 初始化链表
B. 调用插入函数建立一个链表 C. 在链表中寻找指定的元素 D. 在链表中删除指定值的元素 E. 遍历并输出链表
数据结构实验四:顺序表的排序实验
一, 实验题目
实验四:顺序表的排序实验
设计算法将一个整型数组调整为这样的数组:所有3的倍数在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。要求算法的时间尽可能少。
二, 问题分析
本程序要求实现将一个整型数组调整为这样的数组:所有3的倍数在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。根据题目要求,可以用顺序表来实现。程序所能达到的是将顺序表中的元素根据被3整除的情况有规则的输出。
1, 数据的输入形式和输入值的范围:输入的顺序表的个数为大于0且小于顺序表
最大长度的整型数据,而顺序表的元素为整型。
2, 结果的输出形式:程序正确运行后,应输出顺序表中的元素是:所有3的倍数
在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。
3, 测试数据:
(1) 顺序表长度i:4,顺序表元素:33,45,78,99
(2) 顺序表长度i:5,顺序表元素:-12,-4,10,39,93 (3) 顺序表长度i:6,顺序表元素:25,43,8,99,45,32
三, 概要设计
1,为了实现以上程序功能,需要: 1) 建立一个含有i个元素的顺序表 2) 对顺序表的元素进行分区,将所有3的倍数在最左边,所有除以3