链表添加,我个人认为链表添加要了解二级指针和结构体,这个是至关重要的!!!!
二级指针:
int a = 10;
int *p =&a;
int **pp = &p;
*pp是指向p的值, pp == &p; *pp == p == &a; **p == *p ==a;
List **pphead == &phead ; pphead == &phead ; *pphead == phead; **pphead == *phead;
*pphead == phead这个是非常关键,在链表中,能改变头尾指针的变化,并且将实参传递给行参
#include <stdio.h>
#include <stdlib.h>
typedef struct NODE
{
int id;
char *name;
char *tel;
struct NODE *pNext;
}List;
List *GetNode(int id,char *name,char *tel);
void *AddNode(List **pphead,List **ppend,List *ptemp);
int main()
{
List *phead = NULL;
List *pend = NULL;
AddNode(&phead,&pend,GetNode(1,"11","111"));
AddNode(&phead,&pend,GetNode(2,"22","222"));
AddNode(&phead,&pend,GetNode(3,"33","333"));
return 0;
}
List *GetNode(int id,char *name,char *tel)
{
List *ptemp = (List*)malloc(sizeof(List));
ptemp -> id = id;
ptemp -> name = name;
ptemp -> tel = tel;
ptemp -> pNext = NULL;
return ptemp;
}
void *AddNode(List **pphead,List **ppend,List *ptemp) //List **pphead ==&phead pphead == &phead *pphead ==phead **pphead ==*phead
{
if(*pphead == NULL)
{
*pphead = ptemp;
}
else
{
(*ppend) -> pNext = ptemp;
}
*ppend = ptemp;
}