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

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

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

标签:文库时间: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;

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

标签:文库时间: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 - 博文网】

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

一、【实验目的】

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 - 博文网】

实验一 线性表的基本操作

一、实验目的

1、理解线形表的定义、特征和相关概念; 2、理解线形表的顺序存储结构; 3、掌握上机调试线性表的基本方法。 二、实验条件

1、PC机

2、软件Visual C++ 三、实验原理

线性表的顺序存储结构是用一组地址连续的存储单元依次存放线性表中的元素。其实现手段是数组类型。由于内存中的元素存放顺序与逻辑上的顺序相同,所以元素的地址就体现了逻辑关系,即物理相邻=逻辑相邻;在插入或者删除某一个元素时,其后的所有元素也要做相应的后移或者前移,即有可能要移动大量元素。 四、实验内容

1、利用两个线形表LA和LB分别表示两个集合A和B,现要求一个新的集合A=A∪B,用顺序表实现;

2、对给定的两个集合能够进行合并,并给出合并结果; 五、算法分析

void union(List &La, List Lb){ La_len = ListLength(La); Lb_len = ListLength(Lb); for (i=1; i<=Lb_len; i++){ GetElem(Lb,i, e);

If(!LocateElem(La,e,equal)) ListInsert(La, ++L

实验三 栈的基本操作

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

实验三 栈的基本运算

学号:0700710319 姓名:梁浩然 实验日期:2009年5月6日

一、 实验目的:

(1)掌握栈的各种存储结构及基本运算的实现。

(2)掌握堆栈后进先出的运算原则在解决实际问题中的应用。 (3)复习c语言中相关语句及函数的用法。

(4)进一步熟悉c语言的相关知识,能够把某些c语言知识应用得自如一点。 (5)一定要自己先完成实验的课后习题,认真的思考,能够达到独立思考。

二、 实验要求:

(1) 熟练掌握栈的存储结构及其基本操作。

(2)理解所给出的算法,掌握栈在实际中的应用。

(3)将上机程序调试通过,并能独立完成一至两个拓展题目。

(4)一定要读书老师所给出来的程序。

三、 实验内容:

认真阅读数据结构的课本,熟悉所学的知识,认真复习c语言的相关的知识,然后对括号配对检查。试设计一个程序对任意输入的语句或数学表达式,判断其括号是否匹配。若匹配,则返回1,否则返回0。调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对算法的理解。

四、 实验步骤:

首先建立一个栈结构,且初始化栈为空。然后由键盘上随即输入一个带括号的语句

或带括号的数学表达式,

实验三 栈的基本操作

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

实验三 栈和队列的基本操作

一、实验目的

1、掌握栈的顺序存储结构。 2、掌握栈特点,即先进后出原则。 3、掌握栈基本操作实现方法。

4、熟练掌握顺序队、链队的存储原理;

5、熟练掌握顺序队、链队的Java语言实现方法; 6、掌握队列空、队满的判断条件;

7、了解循环队列与普通队列实现上的不同及其解决方法。

二、实现内容

[问题描述] 1、栈

首先,创建栈,并置top指针为-1,栈处于空的状态。

第二,入栈。先判断栈是否是满栈。满栈的话,不做入栈操作,未满的话,做入栈操作。 第三,出栈。先判断栈是否为空,如果是空栈的话,不能做出栈操作,非空的话做出栈操作。 2、队列

首先,创建空队,置队首指针,队尾指针为0和-1

第二,入队操作。判断队列是否已满,队满的话,不能入队,未满的话,做入队操作。 第三,出队操作。判断队是否为空,如果空队的话,不能出队,未空的话,做处队操作。

[基本要求]用顺序存储结构实现存储

[实现提示]顺序存储结构是随机存储结构,直接数组来存储相关数据,用下标来表示栈顶,数据存储从下标0开始存储数据。

[程序实现]

参考书本相关程序实例

三、实验要求

1、通过建立一个简单的菜单来实现进栈、出栈、显示当前栈内元素和退除操作

数据结构实验四 串操作

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

实验报告四 串操作

班级: 姓名: 学号: 专业:

一、 实验目的:

(1) 掌握串的定义、术语。 (2) 掌握串的基本操作算法。 (3) 掌握串的匹配算法。 二、 实验内容:

1. 在常量串MyString类中,增加以下方法,并求各算法的时间复杂度。 public MyString trim() //删除串中所有空格 public char[] toCharArray() //返回字符数组

public MyString toLowerCase() //返回将大写字母转换成小写字母的字符串 public MyString toUpperCase() //返回将小写字母转换成大写字母的字符串

public MyString replace(char old, char newc) //用字符newc替换串中的字符old public Boolean equals(Object obj) //判断两个串是否相等

public Boolean equalsIgnoreCase(String1 str) //判断两个串是否相等,忽略大小写 public int compareTo