链表的建立 ,无返回值的头插和尾插发。 但是依然对二重指针不太理解 需要更进一步的学习理解。
struct Lnode;
typedef int Elemtype;
typedef struct Lnode
{
Elemtype data;
struct Lnode *next; //定义一个struct Lnode 类型的指针
}Lnode,*Linklist; //一个普通类型 一个指针类型
头插法
void create_and_insert1(Linklist *pList)
{
Linklist Tail = *pList =(Linklist)calloc(1,sizeof(Lnode)); //第一个结点已经初始化
int count=0;
//srand(time(NULL));
for(;count!=SIZE;count++)
{
if(count==0)
{
(*pList) -> data =rand()%100;
}
else
{ //动态分配 不会自动释放,
Linklist pcur=(Linklist)calloc(1,sizeof(Lnode)); //已初始化完成
pcur->data=rand()%100;
Tail->next=pcur;
Tail=pcur;
}
}
}
尾插法
void create_and_insert2(Linklist *head)
{
Lnode *Tail=*head=(Lnode*)calloc(1,sizeof(Lnode));
int count=0;
//srand(time(NULL));
for(;count!=SIZE;++count)
{
if(count==0)
{
(*head) -> data =rand()%100;
}
else
{
Lnode *p=(Lnode*)calloc(1,sizeof(Lnode));
p->data=rand()%100;
p->next= *head; //head本身是结构体的地址
*head=p;
}
}
}