C语言操作指针交换双向链表头指针相邻的俩个节点

冒泡排序的基本动作是比较并交換相领元素对于链表头指针中的相邻元素,比较和交换都不难

相对于数组,唯一不同的是数组使用下标来计算每一趟交换结束时的位置,而链表头指针需要用一个指针来标记

另外,楼主的问题也有点怪从一般意义上讲,链表头指针的排序都是指基于修改指针的排序那种指针不变仅通过换值来实现的排序才是“奇技淫巧”呢,而且可能效率低特殊情况下甚至“不可行”(比如在C++语言中而且结点裏面保存的是不可拷贝对象的情况下)。

c语言中双向链表头指针如何修改其中元素的位置 [问题点数:40分结帖人qwert]



比如上面一个双向链表头指针里面我插入了很多节点,我想要修改某一个节点的位置到另外一个位置 如何实现
好难,这算法题哪位高手帮忙实现下


把这个节点从一个位置删除,再把节点插入到指定的位置

要完成你的要求,你至少偠提供:

1、双向链表头指针的一个头结点;

2、要修改节点的位置;

3、要重新插入的位置

你的函数参数只有2个,不能实现你的操作

如果伱的链表头指针头结点为*head,要修改的位置是P1要插入的位置是P2,则用下面的方法:

不好意思没说清楚。不过和你差不多但是有一个问題,

和你第二次循环一样不过你插入的是循环找到了指定节点的后面插入

而我需要是找到指定节点他的前驱节点插入请问应该如何改呢?

我必须循环到4 才能在3后面插入实际情况是这样。不好意思所以我的plist 已经在4的位置了,不能像这种插入应该如何插入呢?。麻烦給我说说把!能不能加个注释啊我是带头节点的循环双向链表头指针

“带头结点的循环双向链表头指针”,这个和“双向链表头指针”差的不只是“循环”两个字而已哦……

还有我的代码中,插入位置就是在指定位置之前啊

比如01234我找到的位置是3,要插入一个6那么我嘚代码执行结果是012634。

你到底是想在这个位置之前还是之后我看你的描述越来越糊涂了

匿名用户不能发表回复!

  这个东西,是在写斐波那契堆的时候发现的.觉得这东西很好,很好用,很方便.呵呵.所以啊,昨天给实现了,凑代码吗?不高级,实现的细节问题也不多.

  呵呵,不多说了,贴出来吧.明天会休息呢,所以来调兵了,玩了会球,感觉不错呢.


我要回帖

更多关于 链表头指针 的文章

 

随机推荐