求助!链表向后循环2位如何算?

Z_Jchen 2017-09-17 07:34:43
#include <stdio.h>
#include <stdlib.h>

#define VALUE int
#define DIR char


typedef struct B { //创建一个向量的结构体
VALUE Value;
DIR Dir;
}VectorQuantity;

typedef struct node { //创建一个结点
VectorQuantity Data;
struct node *next;
}linklist;

linklist ExtData;

linklist *GetData() //从键盘获取数据
{
VectorQuantity vq;
linklist *head, *s; //获取第一个结点数据
head = NULL;
scanf_s("%d", &vq.Value);
vq.Dir = getchar();

while (vq.Dir == 'N')
{
s = (linklist*)malloc(sizeof(linklist));
s->Data.Value = vq.Value;
s->Data.Dir = vq.Dir;
s->next = head;
head = s;
scanf_s("%d", &vq.Value);
vq.Dir = getchar();
}
s = (linklist*)malloc(sizeof(linklist));
s->Data.Value = vq.Value;
s->Data.Dir = vq.Dir;
s->next = head;
head = s;
return head;
}

linklist *Head;

void Move(linklist *list,int k)
{
linklist *ExchangeData = Head;
int K = k;
for (k;k > 0;k--)
ExchangeData = ExchangeData->next;
ExchangeData->next = Head;
Head = ExchangeData;
for (K;K > 0;k--)
ExchangeData = ExchangeData->next;
ExchangeData->next = NULL;
}



int length = 0;
linklist *CirculData(int K)
{
//循环k位
linklist *ExchangeList = Head;
while (ExchangeList != NULL)
{
length++;
ExchangeList = ExchangeList->next;
}
for (int i = 0;i < K;i++)
Move(ExchangeList,length-1);
return Head;
}

void main()
{
Head = GetData();
linklist *PrintData = CirculData(2);
int length = 0;
linklist *ExchangeList = Head;
printf("H");
while (ExchangeList != NULL)
{
length++;
ExchangeList = ExchangeList->next;
}
PrintData = PrintData->next;

for (int i = 0; i <= length; i++)
{
printf("(%d,%c)", PrintData->Data.Value, PrintData->Data.Dir);
PrintData = PrintData->next;
}
system("pause");
}
...全文
126 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-09-18
  • 打赏
  • 举报
回复
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧