02-线性结构3 Reversing Linked List (25 分)

这篇博客探讨了如何使用静态链表来解决反转链表的问题,旨在提升链表操作技能。
摘要由CSDN通过智能技术生成

如果 单纯从做题角度来讲,上一个做法当然没问题,可是目的是为了练习静态链表,so还是不要投机取巧了,静态链表解法如下:

#include <stdio.h>
struct data
{
	int n;
	int next;
 } ss[100000];
 int find(int first);
 int reverse(int first,int sum,int k);
 void print(int first);
 int main()
 {
 	int i,j;
 	int first,sum,k;
 	scanf("%d%d%d",&first,&sum,&k);
 	for(i=0;i<sum;i++)
 	{
 		scanf("%d",&j);
 		scanf("%d%d",&ss[j].n,&ss[j].next);
	}
	sum=find(first);
	if(k>1)
	{
		first=reverse(first,sum,k); 
	}
	print(first);
	return 0;
 }
 int find(int first)
 {
 	int i=1;
 	while(ss[first].next!=-1)
 	{
 		first=ss[first].next;
 		i++;
	 }
	 return i;
 }
 int reverse(int first,int sum,int k)//只解释这个主要函数。 
 {
 	int i;
 	int head;
 	int p1,p2,p3;//p1,p2,p3轮替使指针移位,并且交换指针。 
 	int firstend=first;//记录上一次的末尾,以便跟这一次的头相连。 
 	for(i=0;i<sum/k;i++)
 	{
 		int key=k;
 		key--;
 		p2&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值