单链表插入元素代码
/*链表中插入元素
*/
#include <stdio.h>
#include <malloc.h>
typedef struct Node
{
int data;
struct Node* next;
}Node;
typedef struct Node* linkList;//linkList L 等同于Node* L
//初始化链表
void Init_linkList(linkList *L,int num)
{
linkList p;
//生成头结点
*L = (linkList)malloc(sizeof(Node));
(*L)->next = NULL;
//用for循环头插法不断插入新节点
for(int i=0;i<num;i++){
p = (linkList)malloc(sizeof(Node));
p->data = i;
printf("%d\n",p->data);
//首插法
p->next = (*L)->next;
(*L)->next = p;
}
printf("\n");
//free(p);//这里不能free,因为free之后p指向的内存(链表的第一个节点)释放
}
int main(void)
{
int num = 10;
linkList L = NULL;
Init_linkList(&L,num);
//访问链表所有元素
linkList p;
p = L->next;//让p指向第一个节点
while(p!=NULL){
printf("%d\n",p->data);
p = p->next;
}
//free(p);
return 0;
}
小问题
代码29行不free,会导致内存泄漏吗?
参考
大话数据结构[程杰]