改为(*l)->next=0
l->data=i改为(*l)->data=i
l的类型为linklist*,而linklist为lnode*,即为指针的指针。
#include <stdio.h>#include <stdlib.h>
typedef struct _NODE
{
int data
struct _NODE* next
}NODE
int TEST_ARRAY[] = {1,2,3,4,5,6,7,8,9,10}
struct _NODE * __gListTest = NULL
int ListInit(struct _NODE *list, int *pNum, int num)
int main()
{
NODE *list_ptr = NULL
NODE *next_ptr = NULL
int i = 0
__gListTest = (NODE *)calloc(1,sizeof(NODE))
if(__gListTest == NULL)
{
printf("calloc error\n")
return -1
}
if(ListInit(__gListTest, TEST_ARRAY, sizeof(TEST_ARRAY)/sizeof(int)) == -1)
{
printf("init error\n")
return -1
}
//动态申请的内存必须手动释放
list_ptr = __gListTest
for(i=0i<sizeof(TEST_ARRAY)/sizeof(int)i++)
{
printf("list number %d:data:%d, next:0x%x\n",i+1,list_ptr->data,list_ptr->next)
next_ptr = list_ptr->next
list_ptr->data = 0
list_ptr->next = NULL
free(list_ptr)
list_ptr = next_ptr
}
printf("printf any key to stop the program!")
getchar()
return 0
}
int ListInit(struct _NODE *list, int *pNum, int num)
{
//²¹³ä
NODE *list_ptr = list
NODE *next_ptr = NULL
int i = 0
for(i=0i<numi++)
{
next_ptr = (NODE *)calloc(1,sizeof(NODE))
if(next_ptr == NULL)
{
printf("calloc error\n")
return -1
}
list_ptr->data = pNum[i]
list_ptr->next = next_ptr
list_ptr=list_ptr->next
}
return 0//
}
所谓初始化链表就是把链表的数据置空,也就是所有的数据,指针都为null举个单链表的例子
该算法的结果将单链表head置为空表,只需要将头节点的指针置为null即可。算法实现如下
void
setnull(struct
Lnode
*head)
{
head->next=NULL
}
双链表和循环链表依次类推·