通用的东西写在前面
第一题
key words:原来的节点空间 逆转
思路:使用原来的节点空间就是要求我们只是改变各个节点之间的关系
课上我们其实讲过这个问题,具体的做法就是从头结点开始按顺序遍历链表,然后把每个节点头插入就可以了
具体实现:
第二题
思路:求两个集合的交集,我们就是选择其中一个链表从头到尾遍历每一个元素,然后对于每一个元素在新链表中进行查找,如果找到了,就是交集中的元素,我们就往新链表中插入一个节点,如果没有找到的话,也就是该元素不是交集中的元素,我们就不用管
具体实现:先写一个查找函数
从第一个节点一直开始找,找到就返回true,表示元素存在
一直都到最后了是没有找到,就返回false,表示没有找到该元素
第三题
画个树状图就很容易理解
顺序进栈,对于每个进栈的元素都有两种选择,第一种在栈里面待下去,第二种就是直接出栈
我们就用上面的分支表示该元素在栈里面待着,下面的分支表示该元素直接出栈,那么所有的额顺序就很容易能够写出来了
第四题
用到栈的相关知识
定义一个栈,以及两个char类型的变量
栈进行初始化,x赋值为‘c’,y赋值为‘k’
‘c’进栈,‘a’进栈,‘k’进栈 “cak”
出栈,用栈顶对x进行赋值,此时栈顶是'k',因此x = 'k', 't'进栈 “cat”
‘k’进栈,出栈,用栈顶对x赋值,此时栈顶是 ‘k’,x = ‘k’,‘s’入栈; “cats”
栈不为空,出栈,用栈顶对y赋值,输出y
输出x
第五题
换句话说,一个字符串以最中间为轴,两侧对称,我们只需要把串存起来,然后用两个指针从两头往中间走,依次判断两指针指向的元素是否相等
第六题
思路:队头用head表示,队尾用tail表示
尽管同样是头尾指针相同,我们是可以通过最后一次是操作谁导致的头尾指针相同进行判空判满
入队是操作tail,操作完之后,头尾指针相同,那一定就是满
出队是操作head,操作完之后,头尾指针相同,那一定就是空
知道了这个其实就不难了
具体实现如下:
看都看到这里了,有什么不足之处,欢迎指出,没有的话,动动您的小手点个赞