| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2435 人关注过本帖
标题:不知道哪里出了问题,各位爸爸能帮忙看一下吗?
只看楼主 加入收藏
cjw小菜鸡
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-12-13
结帖率:100%
收藏
 问题点数:0 回复次数:6 
不知道哪里出了问题,各位爸爸能帮忙看一下吗?
1) 创建无序整数链表函数initLink()(表元值运行时输入/随机生成, 二种方法任选其一);
2) 输出链表函数
3) 释放链表所占空间函数
4)创建链表倒序函数
5)创建链表数据排序函数
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
struct intNode
{
    int value;
    intNode *next;
};

intNode* initLink()//生成随机链表
{
    intNode *head, *tail, *p, *q;
    p = (intNode*)malloc(sizeof(intNode));
    srand(time(NULL));
    p->value = rand()%100;
    head = tail=NULL;
    head = p;
    p->next = tail;
    for(int i = 0; i < 9; i++)
    {
        q = (intNode*)malloc(sizeof(intNode));
        q->value = rand()%100;
        q->next = p;
        head = q;
        p = q;
    }
    return head;
}

intNode *copy(intNode *head)//复制链表
{
    return head;
}


intNode *copyReversed(struct intNode *head)//链表倒序
{
    intNode *p, *newh, *newt, *np, *nq;
    p = head;
    newh = newt = NULL;
    np = (intNode*)malloc(sizeof(intNode));
    np->value = p->value;
    np->next = newt;
    p = p->next;
    while(p!=NULL)
    {
        nq = (intNode*)malloc(sizeof(intNode));
        nq->value = p->value;
        nq->next = np;
        newh = nq;
        np = nq;
        p = p->next;
    }
    return newh;
}

intNode *copySorted(struct intNode* head)
{
    int i, max;
    intNode *newh, *newt, *p, *q, *o, *np, *nq;
    newh = newt = NULL;
    p = o = head;
    q = head->next;
    while(q != NULL)
        {
              if(o->value < q->value)
                  o = q;
              q = q->next;
        }
    np = (intNode*)malloc(sizeof(intNode));
    max = np->value = o->value;
    newh = np;
    np->next = newt;
   
    for(i = 0; i<9; i++)
    {
        
        p = o = head;
        q = head->next;
        while(q != NULL)
        {
              if(o->value < q->value && q->value < max)
                  o = q;
              q = q->next;
        }
        max = o->value;
        nq = (intNode*)malloc(sizeof(intNode));
        nq->value = o->value;
        nq->next = np;
        newh = nq;
        np = nq;
    }
    return head;
}


void outputLink(struct intNode *head)//输出
{
    struct intNode *p = head;
    while(p!=NULL)
    {
        printf("%4d", p->value);
        p = p->next;
    }
    printf("\n");
}
void freeLink(struct intNode *h)//释放链表所占空间函数
{
    struct intNode *p;
    while (h != NULL)
    {
        p = h;
        h = h->next;
        free(p);
    }
}

int main()
{
    struct intNode *h[4];
    int i;

    h[0] = initLink();
    h[1] = copy(h[0]);
    h[2] = copyReversed(h[0]);
    h[3] = copySorted(h[0]);

    for (i = 0; i < 4; i++) {
        switch (i) {
        case 0: printf("The random list: \n"); break;
        case 1: printf("The copy of the 1st list: \n"); break;
        case 2: printf("The reversed copy of the 1st list: \n"); break;
        case 3: printf("The sorted copy of the 1st list: \n"); break;
        }
        outputLink(h[i]);
    }

    for (i = 0; i < 1; i++)
        freeLink(h[i]);
    return 0;
}

[此贴子已经被作者于2019-12-22 20:35编辑过]

搜索更多相关主题的帖子: next 链表 NULL value head 链表 value next NULL head 
2019-12-21 13:33
cjw小菜鸡
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-12-13
收藏
得分:0 
错误的范围在copySorted中,我是想把一个已知链表的值按大小赋给一个新的链表,但不知道为什么,原链表的第一个数总是会留下来

[此贴子已经被作者于2019-12-22 20:40编辑过]

2019-12-21 15:35
wbcgg
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-12-13
收藏
得分:0 
小白路过
2019-12-21 17:17
WilsonLA
Rank: 1
等 级:新手上路
威 望:1
帖 子:9
专家分:0
注 册:2020-1-20
收藏
得分:0 
没有定义intNode类型,这个是结构名字,你应该加上struct,可能你书上用了typedef,你给忘了,另外请问你用的是什么书?
好几个小伙伴想你一样申请万内存就直接用,也不判空
2020-01-20 23:29
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
回复 2楼 cjw小菜鸡
有一种调试方法是在程序执行的每一步操作之后加printf()看看程序执行这个步骤的效果是否和自己期待的一致。

你既然锁定问题出现在哪个函数了,那就循环节里加printf()重点关注原链表的第一个元素是在哪一步被丢失的,什么原因

φ(゜▽゜*)♪
2020-01-26 09:31
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
这乱叫爸爸就不太好了,爹可不能乱认啊
2020-01-26 17:54
帅气的老刘
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-2-19
收藏
得分:0 
新手路过
2020-02-20 20:41
快速回复:不知道哪里出了问题,各位爸爸能帮忙看一下吗?
数据加载中...
 
   



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

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