- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
数据结构考试开卷准备资料
一、线性表(顺序和链式,基本)
1.就地逆置:
例:70304010,将其分为两个区间,逆置前和逆置后,每次将逆置前中的第一个元素放
在逆置后区中第一个位置
[]70103040;[70]103040;[1070]3040;[301070]40;[40301070]
2.删除大小范围从x到y之间元素
方法1:用遍历判断的方法,直接从表中删除,顺序表则还需要在每个元素删除之后后面的
元素还要向前移动。(时间代价为O(n^2))
方法2:建立新的表,遍历原来的表,不满足的元素加到新表中,满足条件的不加,最后将
新表赋值给旧表。(时间代价为O(n),但是还有额外的空间代价O(n))
3.用线性表表示多项式并实现多项式相加
(以链表为例)建立一个新的类Node,里面有三个元素,次数(int),系数(int),下一个
元素地址(Node),按照这个类型建立链表,并在建立之后按照次数降序排序。
多项式相加:多项式A和多项式B,获取两个多项式的最高次数和最低次数,按照i=最高次
项到最低次项逐项判断A和B内是否有该次项,无则记为0,有则提取系数进行相加,最终
得到最后结果。
4.交换两个单链表两个元素位置(分别记为A和B)
方法1:直接交换两个元素的值(temp=A.data;A.data=B.data;B.data=temp;)
方法2:交换两个结点,A的前面结点的Next指向某个temp,B的前面结点的Next指向A,
temp指向B;A的Next指向temp1,B的Next指向temp2,此后B的Next指向temp1,B
的Next指向temp2,完成交换。
5.多项式求导数。
由3作为基础。次数不为零的结点,系数等于次数乘系数,次数等于自己减一,次数为零的,
系数等于零。
二、栈
1.汉诺塔
递归,要移动n层的汉诺塔就意味着要移动n-1层在移动最后一层,所以最终是先移动第一
层。
例:三层汉诺塔,就意味着先移动2层,又意味着先移动1层。
[123,,]-[23,1,]-[3,1,2]-[3,,12]-[,3,12]-[1,3,2]-[1,23,]-[,123,]
代码如下:
publicstaticvoidhanoiNormal(intn,charA,charB,charC)
{
//hanoiNormal(1,A,B,C)等价于直接移动A到C(move(A,C))
if(n==1)
{
move(A,C);//将A栈顶元素移动到C栈顶
return;
}
else
{
hanoiNormal(n-1,A,C,B);
move(A,C);
hanoiNormal(n-1,B,A,C);
}
}
2.后缀表达式
遇到数字进栈,遇到符号出栈两个
3.中缀表达式转为后缀表达式:
中缀表达式转后缀表达式的方法:
1.遇到操作数:直接输出(添加到后缀表达式中)
2.栈为空时,遇到运算符,直接入栈
3.遇到左括号:将其入栈
4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左
括号不输出。
5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,
遇到左括号后停止出栈,然后将该运算符入栈
6.最终将栈中的元素依次出栈,输出。
4.判断扩括号匹配性
遇到左括号进栈,右括号出栈(栈内无元素时遇到右括号,或者是遍历完算式栈内仍然有元
素说明括号不匹配)
5.十进制转为二进制或者八进制(以二进制为例,八进制类似)
输入某个数a,a除以二,余数进栈,a变为除以二后的商(已经去掉除数),一直循环,直
到a=0为止。输出结果为,栈顶为结果的最高次项,一直到栈底为个位。
6.二进制或者八进制转为十进制(和5相反即可)(可用栈也可不用)
二进制数a打散为一个一个数,各位开始依次放入数组arry[]中。第几位数就乘2的多少
文档评论(0)