数据结构 实验3 顺序栈的基本操作

“数据结构 实验3 顺序栈的基本操作”相关的资料有哪些?“数据结构 实验3 顺序栈的基本操作”相关的范文有哪些?怎么写?下面是小编为您精心整理的“数据结构 实验3 顺序栈的基本操作”相关范文大全或资料大全,欢迎大家分享。

数据结构 - 顺序栈的基本操作

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

#include using namespace std;

# 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顺序栈的基本操作

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

顺序栈的基本操作实验报告

学院:应用科技学院 专业:电子信息工程 姓名:林三德 学号: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

《数据结构》实验二 栈和队列

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

《数据结构》实验指导及报告书

2014 / 2015 学年 第 1学期

姓 名: 学 号: 班 级: 指导教师:徐江

计算机科学与工程学院

2014

实验二 栈和队列

一、实验目的

1、掌握栈的结构特性及其入栈,出栈操作;

2、掌握队列的结构特性及其入队、出队的操作,掌握循环队列的特点及其操作。

二、实验内容和要求

1、阅读下面程序,将函数Push和函数Pop补充完整。要求输入元素序列1 2 3 4 5 e,运行结果如下所示。

#include #include #define ERROR 0 #define OK 1

#define STACK_INT_SIZE 10 /*存储空间初始分配量*/ #define STACKINCREMENT 5 /*存储空间分配增量*/ typedef int ElemType; /*定义元素的类型*/ typedef struct{ ElemType *base; ElemType *top;

int stacksize; /*当前已分配的存储空间*/ }SqStack;

int InitStack(SqStack

数据结构栈的应用

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

实验三 栈的应用(回文判断及数制转换)(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

《数据结构》实验二 栈和队列

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

《数据结构》实验指导及报告书

2014 / 2015 学年 第 1学期

姓 名: 学 号: 班 级: 指导教师:徐江

计算机科学与工程学院

2014

实验二 栈和队列

一、实验目的

1、掌握栈的结构特性及其入栈,出栈操作;

2、掌握队列的结构特性及其入队、出队的操作,掌握循环队列的特点及其操作。

二、实验内容和要求

1、阅读下面程序,将函数Push和函数Pop补充完整。要求输入元素序列1 2 3 4 5 e,运行结果如下所示。

#include #include #define ERROR 0 #define OK 1

#define STACK_INT_SIZE 10 /*存储空间初始分配量*/ #define STACKINCREMENT 5 /*存储空间分配增量*/ typedef int ElemType; /*定义元素的类型*/ typedef struct{ ElemType *base; ElemType *top;

int stacksize; /*当前已分配的存储空间*/ }SqStack;

int InitStack(SqStack

数据结构查找实验顺序、折半

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

#include #include #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(栈和队列)

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

数据结构练习(栈和队列)

一、选择题

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

数据结构 实验二:单链表的基本操作

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

实验二:单链表的基本操作

一、【实验目的】

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-链表的基本操作

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

实验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. 遍历并输出链表

数据结构实验四:顺序表的排序实验

标签:文库时间:2024-12-15
【bwwdw.com - 博文网】

一, 实验题目

实验四:顺序表的排序实验

设计算法将一个整型数组调整为这样的数组:所有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