《数据结构顺序栈验证实验报告.pdf》由会员分享,可在线阅读,更多相关《数据结构顺序栈验证实验报告.pdf(11页珍藏版)》请在三一文库上搜索。
1、 数据结构实验报告数据结构实验报告 顺序栈操作验证(参考)顺序栈操作验证(参考) 专业: 学号: 姓名: 一、顺序栈操作验证一、顺序栈操作验证 1. 实验目的实验目的 掌握栈的顺序存储结构; 验证栈的操作特性; 掌握栈的基本操作实现方法。 2. 实验内容实验内容 建立含有若干个元素的顺序栈; 对已建立的顺序栈实现入栈、出栈、判栈空和判栈满等基本操作。 3.设计与编码设计与编码 #include #include #define MAX_STACK 120 /栈的最大数据元素数目 typedef struct stack char itemMAX_STACK; /存放栈中数据元素的存储单元 in
2、t top; /栈顶指针 STACK; void INitStack(STACK *S) S- top=- 1; int StackEmpty(STACK *S) /判断栈是否为空 if (S- top=- 1) return 1; else return 0; void GetTop(STACK *S,int *item) /获取栈顶元素 if (StackEmpty(S) printf(Stack is emptyn); return; else *item=S- itemS- top; STACK * Push(STACK *S,char item) /入栈 if (S- top=MAX
3、_STACK- 1) printf(Stack is fulln); return NULL; else S- item+S- top=item; return S; STACK * Pop(STACK *S,int *item) /出栈 if (StackEmpty(S) printf(Stack is emptyn); return NULL; else *item=S- itemS- top- - ; return S; void Print(STACK *S) int i; for(i=0;itop;i+) printf(%c,S- itemi); printf(n); void ma
4、in() struct stack *S=(struct stack *)malloc(sizeof(struct stack); char ch; INitStack(S); printf(请输入原字符串:); while(ch=getchar()!=n) /入栈 Push(S,ch); printf(栈顶元素为:); GetTop(S, putchar(ch); printf(n); printf(字符串逆置输出:); while(!StackEmpty(S) /出栈 Pop(S, putchar(ch); putchar(n); 4.运行结果运行结果 二、二、 数制转换问题数制转换问题
5、1. 问题描述问题描述 对于输入的任意一个非负十进制整数,输出与其等值的其他进制数(二进制、八进制或十六 进制)。 2. 任务要求任务要求 建立模型,确定存储结构; 对任意十进制数,实现进制转换问题。 3.设计与编码设计与编码 主要实现代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace 进制
6、转换器 public partial class MainFrm : Form public MainFrm() InitializeComponent(); private void MainFrm_Load_1(object sender, EventArgs e) txtStart.Focus(); / / 十进制转换为八进制 / / / private void radio_dto_Click_1(object sender, EventArgs e) txtEnd.Text = ; if (txtStart.Text.Length != 0) / TODO: 十进制转为八进制。 In
7、t32 i; try i = Convert.ToInt32(txtStart.Text.Trim(); lblTitle.Text = 十进制转为八进制; txtEnd.Text = Convert.ToString(i, 8); catch MessageBox.Show(请输入合法的十进制数, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show(请提供转换数据!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); txtStart.Focus()
8、; / / 十进制转换为十六进制 / / / private void radio_dth_Click(object sender, EventArgs e) txtEnd.Text = ; if (txtStart.Text.Length != 0) / TODO: 十进制转换为十六进制。 Int32 i; try i = Convert.ToInt32(txtStart.Text.Trim(); lblTitle.Text = 十进制转换为十六进制; txtEnd.Text = Convert.ToString(i, 16); catch MessageBox.Show(请输入合法的十进制
9、数, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show(请提供转换数据!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); txtStart.Focus(); / / 十进制转换为二进制 / / / private void radio_dtb_Click(object sender, EventArgs e) txtEnd.Text = ; if (txtStart.Text.Length != 0) / TODO: 十进制转换为二进制。 Int
10、32 i; try i = Convert.ToInt32(txtStart.Text.Trim(); lblTitle.Text = 十进制转换为二进制; txtEnd.Text = Convert.ToString(i, 2); catch MessageBox.Show(请输入合法的十进制数, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show(请提供转换数据!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); txtStart.Focus()
11、; / / 八进制到十进制 / / / private void radio_otd_Click(object sender, EventArgs e) txtEnd.Text = ; if (txtStart.Text.Length != 0) / TODO: 八进制到十进制。 try lblTitle.Text = 八进制到十进制; txtEnd.Text = Convert.ToString(Convert.ToInt32(txtStart.Text.Trim(), 8);/八进制转为十进制 catch MessageBox.Show(请提供合法的八进制数, 提示, MessageBox
12、Buttons.OK, MessageBoxIcon.Warning); else MessageBox.Show(请提供转换数据!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); txtStart.Focus(); / / 十六进制到十进制 / / / private void radio_htd_Click(object sender, EventArgs e) txtEnd.Text = ; if (txtStart.Text.Length != 0) try / TODO: 十六进制到十进制。 lblTitle.Text = 十六
13、进制到十进制; txtEnd.Text = Convert.ToString(Convert.ToInt32(txtStart.Text, 16); catch MessageBox.Show(请提供合法的十六进制数!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show(请提供转换数据!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); txtStart.Focus(); / / 二进制到十进制 / / / private void radio_b
14、td_Click(object sender, EventArgs e) txtEnd.Text = ; if (txtStart.Text.Length != 0) try / TODO: 二进制到十进制。 lblTitle.Text = 二进制到十进制; txtEnd.Text = Convert.ToString(Convert.ToInt32(txtStart.Text, 2); catch MessageBox.Show(请提供合法的二进制数!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Sh
15、ow(请提供转换数据!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); txtStart.Focus(); private void reset_Click(object sender, EventArgs e) txtStart.Text = ; txtEnd.Text = ; txtStart.Focus(); private void close_Click(object sender, EventArgs e) this.Close(); 4.运行结果运行结果 1) 不输入数据,软件会温馨提示 2)输入数据选择转换模式 3)测试完成,结果正确