顺序表
有以下程序段,先改错,最后再编程实现所有函数的功能。注:main()函数已给出,不得修改,提交时需要提交main函数。
123456789101112131415161718192021222324252627282930313233343536#include <iostream.h>#include <stdlib.h>typedef int T class SeqList{private: T data; int MaxSize; //顺序表最多可以存放的元素个数。 int last; //顺序表最后一个元素的下标,初始值为-1。 void SeqList(int sz); void Input(); //首先输入元素的个数,然后顺次输入元素的值。 void Output(); //输出线性表的所有元素。 void Insert(const T &x, int i); //在线性表中第i个位置插入值为x的元素。 in ...
稀疏矩阵
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149#include <iostream>using namespace std;struct Triple{ int row, col; int value; void operator=(Triple &R) { row = R.row; ...
二叉树的链式存储
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
链表
实习目的: 熟练掌握链表的建立及基本操作问题描述:
实现链表的排序(升序) 提交前请将所有的提示信息去掉,只保留最后的输出结果。例如运行时:从键盘直接输入:2 1 23 1 2 3输出结果为:123分别表示第一个链表元素个数为2,元素分别为 1,2 ;第二个链表元素个数为3,元素分别为1,2,3。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135#include <iostream>using namespace std;class L ...
二叉树与表达式
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127#include "cstdio"#include <cmath>#include <iostream>#include <stdio.h>using namespace std;class Tree;class TreeNode{ friend class Tree;private: char data; TreeNode *left; TreeNode *r ...
排序算法的应用
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#include "assert.h"#include <iostream>using namespace std;void Sort(int *arr, int m){ int i = 0, j = 0, k = m - 1, temp; while (j <= k) { if (arr[j] == 1) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; if (i < j) { cout << i << "<--->" ...
括号匹配(栈)
用栈实现:输入一行符号,以#结束,判断其中的括号是否匹配。括号包括:
{} [] () <>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144#include <iostream>using namespace std;class steak;class StackNode{ friend class LinkedStack;public: Sta ...
栈的应用-进制转换
算法基于原理:N = (N div d)×d + N mod d代码思路:
初始化栈
输入要转化的数据N
当N不为0,把N%8取余的结果入栈
当栈不为空,输出
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687#include <iostream>using namespace std;class steak;class StackNode{ friend class LinkedStack;public: StackNode* link; int data;public: StackNode(StackNode* ptr = NULL) { link = ptr; } StackNode(int& c ...
一元多项式的基本运算
一元多项式的基本运算 实验目的:掌握用线性表实现一元多项式的基本运算。
实验内容:使用链式存储实现一元多项式的加法、减法、乘法和求导。即:
C(x)= A(x)+B(x);C(x)= A(x)-B(x) C(x)= A(x)*B(x) C(x)= A’(x)
菜单:
C :分别创建两个多项式A(x)和B(x),其中 输入时按照 指数的升序顺序输入,遇到系数为0则停止。例如:输入 :
1 2 3 4 5 6 7 8
2 3 4 5 6 7 0
则生成的多项式分别为:
A(x)=x^2+3x^4+5x^6+7x^8
B(x)=2x^3+4x^5+6x^7
2)P:计算C(x)= A(x)+B(x),计算完毕后输出C(x)的 结果
3)S: 计算C(x)= A(x)-B(x),计算完毕后输出C(x)的 结果
4)M: 计算C(x)= A(x)*B(x),计算完毕后输出C(x)的 结果
5)D: 计算C(x)= A’(x),计算完毕后输出C(x)的 结果
6)V: 首先输入一个 float型数据,然后计算 A(x)并输出计算的结果。
7)E: 分别清空A(x)、B(x)、C(x)三个多项式 ...
栈的应用-表达式转换
中缀->后缀先对中缀表达式按运算优先次序加上括号,再把操作符后移到右括号的后面并以就近移动为原则,最后将所有括号消去。
中缀->前缀先对中缀表达式按运算优先次序通统加上括号,再把操作符前移到左括号前并以就近移动为原则,最后将所有括号消去。
代码实现中缀转为后缀原理:
isp叫做栈内(in stack priority)优先数
icp叫做栈外(in coming priority)优先数。
icp>isp则入栈;icp<isp则出栈、输出;icp=isp只出栈 (的栈外优先级最高,一来即入栈;入栈后优先级极低,这样其他操作符可以入栈。
其他操作符进入栈后优先级升1,这样可以保证相同优先级的从左到右计算。
优先级相同:( ) # #
算法:
操作符栈初始化,将结束符‘#’进栈。然后读入中缀表达式字符流的首字符ch。
重复执行以下步骤,直到ch = ‘#’,同时栈顶的操作符也是‘#’,停止循环。
循环过程:
若ch是操作数直接输出,读入下一个字符ch。
若ch是操作符,判断ch的优先级icp和位于栈顶的操作符op的优先级isp:
若 icp(ch) > ...