头指针与头结点的异同
头指针为链表的必要元素,指向第一个结点(若有头结点则指向头结点)
头结点为链表的非必要元素(数据域一般存放链表长度)
头插法
p->next = (*L)->next;
(*L)->next = p;
尾插法
void CreateListTill(LinkList *L, int n)
{
LinkList p,r;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof(Node));
r = *L;//r是指向尾部的结点
for (i = 0; i < n; i++)
{
p = (LinkList)malloc(sizeof(Node));
p->data = rand() % 100 + 1;
r->next = p;
r = p;
}
r->next = NULL;
}
L指的是整个单链表,而r是指向尾结点的变量
循环结束后应将指针置为NULL以便确认尾部
Status ClearList(LinkList *L)
{
LinkList p, q;
p = (*L)->next;//p指向第一个结点
while (p)
{
q = p->next;
free(p);
p = q;
}
(*L)->next = NULL;
return OK;
}