主题:关于链表的基础问题。
#include "stdio.h"
#include "stdlib.h"
typedef int BOOL;
const int FALSE = 0;
const int TRUE = 1;
typedef struct list
{
int data;
struct list *next;
}list;
BOOL create(list *head)
{
head=(list *)malloc(sizeof (list));
if (head == NULL)
return 0;
head->data = -1;
head->next = NULL;
return 1;
}
BOOL add(list *l,int *data)
{
list *temp,*a;
a = l;
temp = (list *)malloc(sizeof (list));
if (temp==0)
return FALSE;
while (1)
{
if (a->next !=NULL)
a= a->next;
else break;
}
a->next = temp;
temp->data = *data;
temp->next = NULL;
return TRUE;
}
void main ()
{
list *a=NULL;
int b[5]={1,2,3,4,5},i;
create(a);
for (i=0;i<=4;i++)
{
add(a,&b[i]);
}
}
目的是实现建立空链表和在表尾处添加新结点。
问题是我的create函数出毛病了,以a为head指针建立不起来链表,错误类似形参,实参。。指针做为传递,应该不会出这个毛病吧。还是在malloc上有什么特殊的说法?高手指点一二,谢谢啦
#include "stdlib.h"
typedef int BOOL;
const int FALSE = 0;
const int TRUE = 1;
typedef struct list
{
int data;
struct list *next;
}list;
BOOL create(list *head)
{
head=(list *)malloc(sizeof (list));
if (head == NULL)
return 0;
head->data = -1;
head->next = NULL;
return 1;
}
BOOL add(list *l,int *data)
{
list *temp,*a;
a = l;
temp = (list *)malloc(sizeof (list));
if (temp==0)
return FALSE;
while (1)
{
if (a->next !=NULL)
a= a->next;
else break;
}
a->next = temp;
temp->data = *data;
temp->next = NULL;
return TRUE;
}
void main ()
{
list *a=NULL;
int b[5]={1,2,3,4,5},i;
create(a);
for (i=0;i<=4;i++)
{
add(a,&b[i]);
}
}
目的是实现建立空链表和在表尾处添加新结点。
问题是我的create函数出毛病了,以a为head指针建立不起来链表,错误类似形参,实参。。指针做为传递,应该不会出这个毛病吧。还是在malloc上有什么特殊的说法?高手指点一二,谢谢啦