在链表中实现两结点前后转换(c语言)

【摘要】 链表的定义:
typedef struct Node
{
int data;
struct Node * next;
}Stack;
12345
构建转换函数: 错误思路: 类比之前的交换两个整形数的函数,如下:
void jiaohuan(int a,int b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
1234567
从而…

链表的定义:

typedef struct Node
{
	int data;
	struct Node * next;
}Stack;

  
 

构建转换函数:
错误思路:
类比之前的交换两个整形数的函数,如下:

void jiaohuan(int a,int b)
{
	int tmp;
	tmp=a;
	a=b;
	b=tmp;
}

  
 

从而写出了如下函数:

void jiaohuan(Stack *A,Stack *B)
{
	Stack *tmp;
	tmp=A;
	A=B;
	B=tmp;
}

  
 

这个函数看似可以,运行就会发现不行。因为这样只改变了指针的指向关系没改变其中的前后指向关系。
正确做法:
只交换其中的值即可。


void jiaohuan(Stack *A,Stack *B)
{
	Stack *tmp;
	tmp->data=A->data;
	A->data=B->data;
	B->data=tmp->data;
}

  
 

如有错误,敬请指正。

文章来源: blog.csdn.net,作者:计算机小弟11,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/m0_55627515/article/details/116375004

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享