复习单向,双向链表,并且实现两种链表的增加和删除功能。
单链表头插
Linklist insert_head(datatype element,Linklist head) {
//创建新节点
Linklist s=create_node();
if(NULL==s) return head;
s->data=element;
//1,判断链表为空
if(NULL==head)
{
head=s;
} else //链表不为空
{
s->next=head; head=s;
}
return head;
}
单链表头删
Linklist delete_head(Linklist head)
{
//1,判断链表为空
if(NULL==head)
{
return head;
} else //链表存在1个或多个节点
{
Linklist del=head;
head=head->next;
free(del);
del=NULL;
}
return head;
}
双向链表头插
Doublelink double_insert_head(datatype element,Doublelink head)
{
//创建新节点s
Doublelink s=create_node();
if(s==NULL) return head;
strcpy(s->data,element);
if(NULL ==head)
head=s;
//2.存在多个节点>=1
else {
s->next=head;
head->priv=s;
head=s;
}
return head;
}
双向链表尾删
Doublelink delete_rear(Doublelink head)
{
//1,判断链表为空
if(NULL ==head)
return head;
//2,只有一个节点
if(head->next==NULL)
{
free(head);
head=NULL;
} else //>=2
{
//找到最后一个节点
Doublelink p=head;
while(p->next!=NULL)
{
p=p->next;
} p->priv->next=NULL;
free(p);
p=NULL;
}
return head;
}