| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1277 人关注过本帖
标题:【新手求助】恳请各位大佬帮我看看这个链表哪里出错了 系统提示无错误无警告 ...
只看楼主 加入收藏
程序小新
Rank: 2
等 级:论坛游民
帖 子:6
专家分:13
注 册:2020-4-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
【新手求助】恳请各位大佬帮我看看这个链表哪里出错了 系统提示无错误无警告 但是输入完数据之后就提示回车退出了
/*
题目:有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);
    }
}
搜索更多相关主题的帖子: 链表 struct int 提示 next 
2020-04-16 14:42
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:5 
有好几处输入,输入到哪里出错
2020-04-16 17:21
程序小新
Rank: 2
等 级:论坛游民
帖 子:6
专家分:13
注 册:2020-4-16
收藏
得分:0 
回复 2楼 吹水佬
运行结果如下:
请输入原链表有几个整数:5
请输入需要后移几个位置:3
请输入链表中的元素:
1
2
3
4
5
Press any key to continue

每次都是这样输入完就直接让退出了
2020-04-16 17:44
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:15 
你的头结点里面的next是野指针,与其他结点并无连接。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-04-16 18:53
程序小新
Rank: 2
等 级:论坛游民
帖 子:6
专家分:13
注 册:2020-4-16
收藏
得分:0 
回复 4楼 forever74
谢谢大佬的提示,已经把野指针解决了,程序也运行成功了,万分感谢。
2020-04-16 20:17
快速回复:【新手求助】恳请各位大佬帮我看看这个链表哪里出错了 系统提示无错误 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017370 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved