单链表初始化

Python017

单链表初始化,第1张

l->next=0//先建立一个带头结点的单链表,头结点数据域存储元素个数

改为(*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

}

双链表和循环链表依次类推·