20230720

双向链表逆置

//逆置

DoubleLink nizhi(DoubleLink L,int n);
------------------------------------------
DoubleLink nizhi(DoubleLink L,int n)
{
		//1,如果链表为空,
	if(NULL==L)
		return L;
	//2,判断链表只有一个节点
	if(L==L->next)
	{
		free(L);
		L=NULL;
		return L;
	}
	else
	{
		//3,存在多个节点
		//找到倒数第一个节点
		DoubleLink rear=L->prev;

		DoubleLink p = L;
		DoubleLink q = rear;
		int i;
		datatype t;
		for(i=0;i<n/2;i++)
		{
			strcpy(t,p->data);
			strcpy(p->data,q->data);
			strcpy(q->data,t);

			p=p->next;
			q=q->prev;
		}
	}
	return L;
}
-----------------------------------------------
#include "loop_double_head.h"
int main(int argc, const char *argv[])
{
	DoubleLink L=NULL;
	int n;
	datatype e;
	printf("请输入数据个数: ");
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		printf("请输入第 %d 个数据: ",i+1);
		scanf("%s",e);
	//	L=insert_head(e,L);//头插
		L=insert_rear(e,L);//尾插
	}



	//循环输出
	output(L);
	nizhi(L,n);

	printf("-----------------逆置后为:-----------------\n");
	output(L);
	printf("-----------------逆置后为:-----------------\n");
---------------------------------------------------------------请输入数据个数: 6
请输入第 1 个数据: aa
请输入第 2 个数据: bb
请输入第 3 个数据: cc
请输入第 4 个数据: dd
请输入第 5 个数据: ee
请输入第 6 个数据: ff
正向遍历
aa	bb	cc	dd	ee	ff	
逆向遍历
ff	ee	dd	cc	bb	aa	
-----------------逆置后为:-----------------
正向遍历
ff	ee	dd	cc	bb	aa	
逆向遍历
aa	bb	cc	dd	ee	ff	
-----------------逆置后为:-----------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值