| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 385 人关注过本帖
标题:那位大虾帮忙找一下错误
只看楼主 加入收藏
zbyw
Rank: 2
等 级:论坛游民
帖 子:31
专家分:57
注 册:2009-7-23
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:2 
那位大虾帮忙找一下错误
# include <stdlib.h>
# include <stdio.h>

typedef struct list {
    int data;
    struct list *next;
} Llist, *NewList;

// 单链表的声明函数系列
void list(void);                // 单链表的主函数;
void createlist(NewList);        // 加长链表的长度;
void printlist(NewList);        // 输出链表的数据;

// 源代码开始
main()
{
    list();
}

// 单链表的主函数
void list (void)
{
    NewList head;
    head->data = 12;
    head->next = NULL;
    createlist(head);
    printlist(head);
}

// 延长单链表的长度并存储数据
void createlist(NewList head)
{
    int data;
    NewList p;            
    NewList nextlist;        // 作为交换的中间量
    int n = 1;
    while(1)
    {
        if(n == 2)            // 作为链表长度的限定
            break;
        printf("Enter new data: \n");
        scanf("%d", &data);
        nextlist = malloc(sizeof(NewList));  // 分配资源
        nextlist->data = data;
        nextlist->next = NULL;
        if(head->next == NULL)
        {
            head->next = nextlist;
            p = nextlist;
        }
        else
        {
            p->next = nextlist;
            p = nextlist;
        }
        n++;
//        free(nextlist);
    }
}

void printlist(NewList head)
{
    printf("Enter the list");
    while(head->next != NULL)
    {
        printf("%d",(head++)->data);
    }
}
搜索更多相关主题的帖子: void head include 源代码 延长 
2010-04-28 13:50
xueyuhanhai
Rank: 4
等 级:业余侠客
帖 子:90
专家分:238
注 册:2010-4-5
收藏
得分:2 
楼主帮你改了一下在VC++6.0上通过了运行:
原程序如下:
// gh.cpp : Defines the entry point for the console application.
//

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

typedef struct list {
    int data;
    struct list *next;
} Llist, *NewList;//自定义的类型;Llist可以定义结构体的变量;*NewList 可以定义结构体的指针变量;

// 单链表的声明函数系列;
void list(void);                // 单链表的主函数;
void createlist(NewList);        // 加长链表的长度;参数是指针类型的;
void printlist(NewList);        // 输出链表的数据;参数是指针类型的;

// 源代码开始;

int main(int argc, char* argv[])
{
    list();
    printf("Hello World!\n");
    return 0;
}


// 单链表的主函数;
void list (void)
{
    NewList head;
    head=NULL;//head仅仅是指针变量,里面放的是地址;一般分配的内存是4或8个字节,对于现在的32位或是64位的计算机。
    createlist(head);
    printlist(head);
}

// 延长单链表的长度并存储数据;
void createlist(NewList head)
{
    int data;
    NewList p;    //指针变量;        
    NewList nextlist;        // 作为交换的中间量是指针变量;
    int n = 1;
    while(1)
    {
        if(n == 2)            // 作为链表长度的限定(你所限定的链表最多只有一个结点,建议改为10个或是其他);
            break;
        printf("Enter new data: \n");
        scanf("%d", &data);
        nextlist = (struct list*)malloc(sizeof(Llist));  // 分配资源(你注意一下动态分配的格式)
        nextlist->data = data;
        nextlist->next = NULL;
        if(head == NULL)
        {
            head = nextlist;//头指针指向新进的头结点;
            p = nextlist;//当前的指针也指向这个结点;
        }
        else
        {
            p->next = nextlist;
            p = nextlist;
        }
        n++;
      free(nextlist);//一定要释放空间;
    }
}


//输出链表;
void printlist(NewList head)
{
    printf("Enter the list");
    NewList p;
    p=head;//用于指向输出的结点;
    do
    {
        printf("%d",p->data);
        p=p->next;
    }while(p!=NULL);
}

你对头结点和头指针不是特别的清楚,呵呵,希望楼主不要怪我的坦诚。
2010-04-28 14:44
zbyw
Rank: 2
等 级:论坛游民
帖 子:31
专家分:57
注 册:2009-7-23
收藏
得分:0 
在学习的时候都要坦诚一点....
2010-04-28 21:06
快速回复:那位大虾帮忙找一下错误
数据加载中...
 
   



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

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