程序在打印的时候出错了
大家可以运行看看
#include "stdafx.h"
#include "stdlib.h"
struct list
{
int number;
int name[10];
struct list *next;
};
void free_list(struct list *head)
{
struct list *pointer;
pointer=new (list);
while(pointer!=NULL)
{
pointer=head;
head=head->next ;
free(pointer);
}
}
void print_list(struct list *head)
{
struct list *pointer;
pointer=head;
while(pointer=NULL);
{
printf("##input data##\n");
printf("data number:%d\n",pointer->number  );
printf("data name :%s\n",pointer->name );
pointer=pointer->next ;
}
}
struct list* create_list(struct list *head)
{
int datanum;
char dataname[10];
struct list *New;
struct list *pointer;
int i;
head=new(list);
if(head==NULL)
printf("Memeory allocate Failure!!=\n");
else
{
datanum=1;
printf("please input the data name:");
scanf("%s",dataname);
head->number =datanum;
for(i=0;i<=10;i++)
head->name [i]=dataname[i];
head->next =NULL;
pointer=head;
while(1)
{
datanum++;
New=new(list);
printf("please input the data name:");
scanf("%s",dataname);
if(dataname[0]=='0')
break;
New->number=datanum;
for(i=0;i<=10;i++)
{
New->name[i]=dataname[i];
}
New->next=NULL;
pointer->next=New;
pointer=New;
}
}
return head;
}
int main(int argc, char* argv[])
{
struct list *head;
head=create_list(head);
if(head!=NULL)
{
print_list(head);
free_list(head);
}
return 0;
}

解决方案 »

  1.   

    //首先,我要说的是:你这个程序写得比较糟糕.
    //我只帮你让程序跑起来,程序的优化你自己来完成了#include "stdio.h"
    #include "stdlib.h"
    struct list
    {
    int number;
    //int name[10];
    char name[10];//这里你应该用 char 型,否则打印就有第一个字母!
    struct list *next;
    };
    void free_list(struct list *head)
    {
    struct list *pointer;
    //不要再new了 pointer=new (list);
    pointer = head;
    while(pointer!=NULL)
    {
    pointer=head;
    if ( pointer == NULL ) break;//顺着你的方式的
    head=head->next ;
    free(pointer);
    }
    }
    void print_list(struct list *head)
    {
    struct list *pointer;
    pointer=head;
    //写好点! while(pointer=NULL);
    while(pointer!=NULL)
    {
    printf("##input data##\n");
    printf("data number:%d\n",pointer->number  );
    printf("data name :%s\n",pointer->name );
    pointer=pointer->next ;
    }
    }
    struct list* create_list(struct list *head)
    {
    int datanum;
    char dataname[10];
    struct list *New;
    struct list *pointer;
    int i;
    head=new(list);
    if(head==NULL)
    printf("Memeory allocate Failure!!=\n");
    else
    {
    datanum=1;
    printf("please input the data name:");
    scanf("%s",dataname);
    head->number =datanum;
    //越界 for(i=0;i<=10;i++)
    for(i=0;i<10;i++)
    head->name [i]=dataname[i];
    head->next =NULL;
    pointer=head;
    while(1)
    {
    datanum++;
    //搬到下面 New=new(list);
    printf("please input the data name:");
    scanf("%s",dataname);
    if(dataname[0]=='0')
    break;New=new(list);//搬到这里
    New->number=datanum;
    //越界 for(i=0;i<=10;i++)
    for(i=0;i<10;i++)
    {
    New->name[i]=dataname[i];
    }
    New->next=NULL;
    pointer->next=New;
    pointer=New;
    }
    }
    return head;
    }
    int main(int argc, char* argv[])
    {
    struct list *head;
    head=create_list(head);
    if(head!=NULL)
    {
    print_list(head);
    free_list(head);
    }
    return 0;
    }