0205作业

单链表头插

/** 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;

}

你可能感兴趣的:(java,javascript,算法)