【新手求助】恳请各位大佬帮我看看这个链表哪里出错了 系统提示无错误无警告 但是输入完数据之后就提示回车退出了
/*题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct pNode
{
int data;
struct pNode *next;
};
void updata(struct pNode *headNode,int n,int m)
{
int i;
struct pNode *a,*b,*c;
b = headNode->next;
for(i = 0;i < n-m-1;i++)
b = b->next;
a = b; //a保存需要往前移的链段的前一个结点的地址
b = b->next; //b保存寻找需要往前移的链段的第一个结点的地址
c = b;
for(i = 0;i < m-1;i++)
c = c->next; //c保存初始链表尾结点的地址
c->next = headNode->next;
headNode->next = b;
a->next = NULL;
}
void output(struct pNode *headNode) //创建链表之后只运行这个函数也出不来结果
{
struct pNode *q;
q = headNode->next;
printf("前面各数顺序向后移m个位置后新链表为:\n");
while(q != NULL)
{
printf("%d ",q->data);
q = q->next;
}
}
void main()
{
int m,n;
int i;
int number;
struct pNode *headNode;//头结点
struct pNode *p;
printf("请输入原链表有几个整数:");
scanf("%d",&n);
printf("请输入需要后移几个位置:");
scanf("%d",&m);
printf("请输入链表中的元素:\n");
headNode = (struct pNode *)malloc(sizeof(struct pNode));
p = headNode->next;
for(i = 0;i < n-1;i++)
{
p = (struct pNode *)malloc(sizeof(struct pNode));
scanf("%d",&number);
p->data = number;
p = p->next;
}
p = (struct pNode *)malloc(sizeof(struct pNode));
scanf("%d",&number);
p->data = number;
p->next = NULL;//尾结点的next为NULL
if(m>n)
printf("error!\n");
else
{
updata(headNode,n,m);
output(headNode);
}
}