
请C语言高手帮下忙
链表,实现创建、插入和打印。有一个error,可自己找不到,请高手帮忙。#include<stdafx.h>#include<stdio.h>#include<stdli...
链表,实现创建、插入和打印。有一个error,可自己找不到,请高手帮忙。
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct list
{
int num;
struct list *next;
}list; //new ADT
list *Head;
Head=(list *)malloc(sizeof(list));
Head->next=NULL;
int N; //to count the member of the list
N=0;
void initlist() //inite a list
{
int i;
list *a;
char judge;
a=Head;
for(i=1;;i++)
{
N++;
a->next=(list *)malloc(sizeof(list));
a=a->next;
printf("Please input NO.%d's data:\n",i);
scanf("%d",&a->num);
printf("continue?(Y/N)\n");
judge=getchar();
if(judge=='n'||judge=='N')
break;
}
a->next=NULL;
}
void insertlist(list *head,int i) //insert data
{
list *temp,*a;
int n;
a=head;
for(n=0;n<i;n++)
a=a->next;
temp=a->next;
a->next=(list *)malloc(sizeof(list));
a=a->next;
a->next=temp;
printf("insert data:\n");
scanf("%d",&a->num);
printf("\n");
N++;
}
void printlist() //print a list
{
list *a;
a=Head->next;
while(a->next!=NULL)
{
printf("%d",a->num);
a=a->next;
}
printf("%d\n",a->num);
}
void main(int argc, char* argv[])
{
printf("inite a list:\n");
initlist();
printf("Want to insert?(Y/N)\n");
char j;
j=getchar();
if(j=='y'||j=='Y')
{
printf("insert after which one?\n");
int n;
scanf("%d",&n);
if(n<=N)
insertlist(Head,n);
else
printf("ERROR\n");
}
printlist();
} 展开
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct list
{
int num;
struct list *next;
}list; //new ADT
list *Head;
Head=(list *)malloc(sizeof(list));
Head->next=NULL;
int N; //to count the member of the list
N=0;
void initlist() //inite a list
{
int i;
list *a;
char judge;
a=Head;
for(i=1;;i++)
{
N++;
a->next=(list *)malloc(sizeof(list));
a=a->next;
printf("Please input NO.%d's data:\n",i);
scanf("%d",&a->num);
printf("continue?(Y/N)\n");
judge=getchar();
if(judge=='n'||judge=='N')
break;
}
a->next=NULL;
}
void insertlist(list *head,int i) //insert data
{
list *temp,*a;
int n;
a=head;
for(n=0;n<i;n++)
a=a->next;
temp=a->next;
a->next=(list *)malloc(sizeof(list));
a=a->next;
a->next=temp;
printf("insert data:\n");
scanf("%d",&a->num);
printf("\n");
N++;
}
void printlist() //print a list
{
list *a;
a=Head->next;
while(a->next!=NULL)
{
printf("%d",a->num);
a=a->next;
}
printf("%d\n",a->num);
}
void main(int argc, char* argv[])
{
printf("inite a list:\n");
initlist();
printf("Want to insert?(Y/N)\n");
char j;
j=getchar();
if(j=='y'||j=='Y')
{
printf("insert after which one?\n");
int n;
scanf("%d",&n);
if(n<=N)
insertlist(Head,n);
else
printf("ERROR\n");
}
printlist();
} 展开
2个回答
展开全部
你以下几行是不行的
list *Head;
Head=(list *)malloc(sizeof(list));//error
Head->next=NULL; //error
int N;
N=0; //error
标了error 是错误的语句。它们都是赋值语句,但是没有放在函数里面调用而是放在全局区域中,这是无法执行的。
给你提供两个方法解决:一个是用一个函数专门负责头指针,N依旧全局变量
list* CreateHead(){
list *Head;
Head=(list *)malloc(sizeof(list));
Head->next=NULL;
return Head;}
static int N = 0;
……
void main(){list* head = CreateHead();……}
第二个方法是:
list *Head=(list *)malloc(sizeof(list));
static int N = 0;
……
希望帮到你。
list *Head;
Head=(list *)malloc(sizeof(list));//error
Head->next=NULL; //error
int N;
N=0; //error
标了error 是错误的语句。它们都是赋值语句,但是没有放在函数里面调用而是放在全局区域中,这是无法执行的。
给你提供两个方法解决:一个是用一个函数专门负责头指针,N依旧全局变量
list* CreateHead(){
list *Head;
Head=(list *)malloc(sizeof(list));
Head->next=NULL;
return Head;}
static int N = 0;
……
void main(){list* head = CreateHead();……}
第二个方法是:
list *Head=(list *)malloc(sizeof(list));
static int N = 0;
……
希望帮到你。
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct list
{
int num;
struct list *next;
}list; //new ADT
int N = 0; //to count the member of the list
void initlist(list* Head) //inite a list
{
int i;
list *a;
char judge;
a=Head;
for(i=1;;i++)
{
N++;
a->next=(list *)malloc(sizeof(list));
a=a->next;
printf("Please input NO.%d's data:\n",i);
scanf("%d",&a->num);
getchar();//处理回车
printf("continue?(Y/N)\n");
judge=getchar();
if(judge=='n'||judge=='N')
break;
}
a->next=NULL;
}
void insertlist(list *head,int i) //insert data
{
list *temp,*a;
int n;
a=head;
for(n=0;n<i;n++)
a=a->next;
temp=a->next;
a->next=(list *)malloc(sizeof(list));
a=a->next;
a->next=temp;
printf("insert data:\n");
scanf("%d",&a->num);
printf("\n");
N++;
}
void printlist(list* Head) //print a list
{
list *a;
a=Head->next;
printf("the numbers are : \n");
while(a->next!=NULL)
{
printf("%d ",a->num);
a=a->next;
}
printf("%d\n",a->num);
}
void main(int argc, char* argv[])
{
list *Head;
Head=(list *)malloc(sizeof(list));
Head->next=NULL;
printf("inite a list:\n");
initlist(Head);
getchar();//还是处理回车
printf("Want to insert?(Y/N)\n");
char j;
j=getchar();
if(j=='y'||j=='Y')
{
printf("insert after which one?\n");
int n;
scanf("%d",&n);
if(n<=N)
insertlist(Head,n);
else
printf("ERROR\n");
}
printlist(Head);
}
实现基本功能,程序不健壮
#include <stdlib.h>
#include <malloc.h>
typedef struct list
{
int num;
struct list *next;
}list; //new ADT
int N = 0; //to count the member of the list
void initlist(list* Head) //inite a list
{
int i;
list *a;
char judge;
a=Head;
for(i=1;;i++)
{
N++;
a->next=(list *)malloc(sizeof(list));
a=a->next;
printf("Please input NO.%d's data:\n",i);
scanf("%d",&a->num);
getchar();//处理回车
printf("continue?(Y/N)\n");
judge=getchar();
if(judge=='n'||judge=='N')
break;
}
a->next=NULL;
}
void insertlist(list *head,int i) //insert data
{
list *temp,*a;
int n;
a=head;
for(n=0;n<i;n++)
a=a->next;
temp=a->next;
a->next=(list *)malloc(sizeof(list));
a=a->next;
a->next=temp;
printf("insert data:\n");
scanf("%d",&a->num);
printf("\n");
N++;
}
void printlist(list* Head) //print a list
{
list *a;
a=Head->next;
printf("the numbers are : \n");
while(a->next!=NULL)
{
printf("%d ",a->num);
a=a->next;
}
printf("%d\n",a->num);
}
void main(int argc, char* argv[])
{
list *Head;
Head=(list *)malloc(sizeof(list));
Head->next=NULL;
printf("inite a list:\n");
initlist(Head);
getchar();//还是处理回车
printf("Want to insert?(Y/N)\n");
char j;
j=getchar();
if(j=='y'||j=='Y')
{
printf("insert after which one?\n");
int n;
scanf("%d",&n);
if(n<=N)
insertlist(Head,n);
else
printf("ERROR\n");
}
printlist(Head);
}
实现基本功能,程序不健壮
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询