概述
当i或者j为1时,需要让链表的表头指向j。
代码为
/*i和j为1时情况比较特殊,需要让表头重新指向交换后的那个节点*/
if (i == 1) {
t1 = *L;
for (m = 1; temp->Next != NULL; m++, temp = temp->Next) {
if (m + 1 == j) {
*L = temp->Next;
t2 = temp->Next->Next;
temp->Next->Next = t1->Next;
t1->Next = t2;
temp->Next = t1;
}
}
}
当i和j都不为1时。
节点相邻与不相邻也是不一样的。
不相邻的情况下就是让i前面的节点指向j,然后让j前面的节点指向i。如果两个节点相邻(假设i < j)j前面的节点就是i,j前面的节点指向i就是指向了自己,所以要分开写。
不相邻节点时:
代码为:
if ((i - j) != 1 && (j- i) != 1) {
//非相邻结点之间交换
for (m = 1; temp->Next != NULL; m++, temp = temp->Next) {
if (m + 1 == i) {
t1 = temp;
}
if (m + 1 == j) {
t2 = temp;
最后
以上就是明理电脑为你收集整理的C语言实现链表基本操作(交换第i个和第j个节点)的全部内容,希望文章能够帮你解决C语言实现链表基本操作(交换第i个和第j个节点)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复