| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:【求助】通过数组实现链表逆向输出
只看楼主 加入收藏
iov_aaron
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
【求助】通过数组实现链表逆向输出
Hello,各位

想通过数组实现链表逆向输出,但是总出现问题,麻烦帮忙解决下:

#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
    int data;
    struct Lnode * next;
}Lnode;

Lnode *head;   // 头结点
int array[512];
int n;

// 创建链表
Lnode* create()
{
    Lnode *p;

    p = (Lnode *)malloc(sizeof(Lnode));
    if (p == NULL)
    {
        printf("err!");
    }
   
    p = head;
    p->next= NULL;

    return p;
}

// 输入数据做成链表
void Insert()
{
    int i = 0;
    Lnode *L;
    L = (Lnode *)malloc(sizeof(Lnode));
    if (L == NULL)
    {
        printf("err!");
    }
    while (i<n || L->data ==0)
    {
        printf("input num:\n");
        scanf("%d ",L->data);
        i++;

        L->next = head->next;
        head->next = L;
    }
}

void change()
{
    int i,j,temp;
    Lnode *t;
    t =  (Lnode *)malloc(sizeof(Lnode));
    if (t == NULL)
    {
        printf("err!");
    }
    t = head;
// 将链表中的数据输出到全局数组中
    for (i=0;i<n;i++)
    {
        array[i] = t->data;
        t = t->next;
    }

// 对全局数组中进行排序
    for (i=0;i<n;i++)
    {
        temp = array[i];
        array[0] = array[n-i];
        array[n-i] = temp;
    }
// 将排序后的全局数组中的值输入到链表中
    for (i=0;i<n;i++)
    {
        t->data = array[i];
        t = t->next;
    }
}

void main()
{
    int i=0;
    Lnode *s;
    s = (Lnode *)malloc(sizeof(Lnode));
    s = head;
    scanf("%d\n",&i);
    n = i;

    create();
    Insert();
    change();
    do
    {
        printf("%d ",s->data);
        s = s->next;
    }
    while(s != NULL);
}
搜索更多相关主题的帖子: return 
2011-05-05 23:12
_xiong_mao_1
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:49
专家分:102
注 册:2010-12-6
收藏
得分:20 
1.scanf("%d ",L->data);少了个取地址符&
2.        temp = array[i];
        array[0] = array[n-i];
        array[n-i] = temp;
    }
楼主再看下吧,array[0]这个应该是误输入吧
3.
// 将排序后的全局数组中的值输入到链表中
    for (i=0;i<n;i++)
    {
        t->data = array[i];
        t = t->next;
    }
}
在此操作之前,请加入   t=head;   因为你在把数据输出到数组时,t指针已经到结尾了

暂时看出这么多,楼主再改改吧
2011-05-05 23:31
iov_aaron
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-25
收藏
得分:0 
回复 2楼 _xiong_mao_1
多谢,
不过修正后还是不行
2011-05-06 23:58
快速回复:【求助】通过数组实现链表逆向输出
数据加载中...
 
   



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

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