单链表头插
/** function:
头插:在第一个节点插入 *
@param [ in] * @param [out] 插入的值,
链表 * @return 如果形参头指针改变,就必须返回,返回首地址
*/ 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 insert_rear(datatype element,Linklist head)
{ //创建新节点s
Linklist s=create_node();
if(NULL==s) return head;
s->data=element;
//1,判断链表为空
if(NULL ==head)
{
head=s;
} else //链表不为空
{
//1,循环到最后一个节点
Linklist p=head;
while(p->next!=NULL)
{
p=p->next;
}
//2,在p后面插入s
p->next=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;
}
单链表尾删
Linklist delete_rear(Linklist head)
{
//1,判断链表为空
if(NULL ==head)
return head;
//2,判断链表只有一个节点
if(NULL ==head->next)
{
free(head);
head=NULL;
} else
//存在多个节点>=2
{ //3.找到倒数第2个节点
Linklist del=head;
(del->next->next!=NULL)
{
del=del->next;
}
//4.删除del->next
free(del->next);
del->next=NULL;
}
return head;
}
4> 双向链表节点头插
/* * function: 双向链表头插
@param [ in] *
@param [out] 值,头指针 *
@return 返回头指针 */
Doublelink double_insert_head(datatype element,Doublelink head)
{
//创建新节点s
Doublelink s=create_node();
if(s==NULL)
return head;
strcpy(s->data,element);
//1.判断链表为空
if(NULL ==head)
head=s;
//2.存在多个节点>=1
else {
s->next=head;
head->priv=s;
head=s;
}
return head;
}
双向链表节点尾插
/* * function: 尾插入 *
@param [ in] *
@param [out] *
@return 返回链表 */
Doublelink doublelink_insert_rear(datatype element,Doublelink head)
{ //创建新节点s
Doublelink s=create_node();
if(s==NULL)
return head;
strcpy(s->data,element);
//1,没有节点
if(NULL ==head)
head=s;
else {
//找到最后一个节点
Doublelink p=head;
while(p->next!=NULL)
{
p=p->next;
}
//插入s
p->next=s;
s->priv=p;
}
return head;
}
双向链表节点头删
/* * function: 头删 *
@param [ in] *
@param [out] *
@return */
Doublelink delete_head(Doublelink head)
{ //1,判断链表为空
if(NULL==head)
return head;
//2,存在多个节点
Doublelink q=head;
head=head->next;
if(head!=NULL)
head->priv=NULL;
free(q); q=NULL;
return head;
}
双向链表节点尾删
/* * function: 尾删 *
@param [ in] 链表 *
@param [out] *
@return 链表 */
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;
}
原文地址:https://blog.csdn.net/JeromeSahara/article/details/136046708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_67261.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!