单链表的排序
编程实现单链表的排序。
答案:
完整代码如下:
-----------------------------------------------------------------------------------------------------------------------------------------------------
编程实现单链表的逆置。[美国某著名分析软件公司2005年面试题]
解析:
单链表模型如下图所示。
进行单链表逆置,首先要让p2的next指向p1,如下图所示。
再由p1指向p2,p2指向p3,如下图所示。
然后重复p2的next指向p1,p1指向p2,p2指向p3。
答案:完整代码如下:
--------------------------------------------------------------------------------------------------------------------------------------------------------
有一个C语言用来删除单链表的头元素的函数,请找出其中的问题并加以纠
正。[中国某著名综合软件公司2005年面试题]
解析:如果先做free(head)之后,就找不到head了,下一句head=head->next就不能正确链
接了。
答案:正确程序如下:
-----------------------------------------------------------------------------------------------------------------------------------------------------
给出一个单链表,不知道节点N的值,怎样只遍历一次就可以求出中间节点,
写出算法。[中国著名通信企业H公司2007年11月面试题]
解析:设立两个指针,比如*p和*q。p每次移动两个位置,即p=p-> next-> next,q每次移
动一个位置,即q=q-> next。
当p到达最后一个节点时,q就是中间节点了。
答案:
算法如下: