习题6
要求1:建立两个从小到大排序的链表
实现:创建两个表头,分别进行尾插(顺序输入时),若是乱序则边插边排
要求2:合并链表并顺序输出(从小到大)
实现:创建第三个表头,对另外两个链表里的元素依次删除节点,把删除的节点接上去(相当于边插边排序)。
方法二:把一个表的表头去掉接到另一个链表的尾,排序时,若每个节点里的东西少,如只有数值,就可以直接交换数值(要知道节点数,采用冒泡选择类的排序方式),但若是节点里的东西多的话,就只能交换节点。
7、题目:设单链表的表头指针为h,结点结构由data和next两个域构成,其中data域为字符型。
试设计算法判断该链表的前n个字符是否中心对称。例如xyx,xyyx都是中心对称。
问题一:输入时如果要一个一个的输入(输一个字符敲下回车)显得太麻烦,
输入数据个数倒是没什么
解决方法:使用getchar()把字符放到缓冲区中再由scanf取出赋值(存疑,且有使用限制)
问题二:怎么比较单链表里的字符(需要比较首尾),链表是单向的,且每一个节点至于上一个节点有关。
解决方法:把链表里的每个元素取出放在字符数组里,之后进行比较(毕竟题目要求仅仅是判断)