这是关于单链表的分段逆转的题?我是打算着分段输出,但是这个代码好像逻辑有问题,大佬帮帮忙!
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}LNode,*Linklist;
Linklist Creat_list(Linklist head)
{
head=(Linklist)malloc(sizeof(LNode));
LNode *node=NULL;
int count=0;
head->next=NULL;
node=head->next;
scanf("%d",&count);
for(int i=0;i<count;i++)
{
node=(Linklist)malloc(sizeof(LNode));
node->data=i;
node->next=head->next;
head->next=node;
}
return head;
}
void K_Reverse(Linklist head,int K)
{
Linklist p,newhead,H,node,head2[10],G[10];
int count=0;
G[1]=H=head->next;
newhead=NULL;
while(H)
{
count++;
H=H->next;
}
head=head->next;
if(K>1&&K<=count)
{
for(int i=1;i<=count/K;i++)
{
for(int j=0;j<K;j++)
{
node=head;
head=head->next;
node->next=newhead;
newhead=node;
}
head2[i]=node;
G[i+1]=head;
G[i-1]->next=head2[i];
}
}
G[count/K]->next=G[count/K+1];
for(int i=1;i<=count/K;i++)
{
printf("%d %d",head2[i],G[i]);
}
for(p=G[count/K+1];p<H;p++)
printf("%d",*p);
}
int main()
{
Linklist head;
int K;
scanf("%d",&K);
Creat_list(head);
K_Reverse(head,K);
return 0;
}
我这个比较低端,要求数据是有序的输入的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论