本文主要是介绍链表插入,反转,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
bool InsertOFPos(SingleList *head,ElemType val,int pos)//按位置插入
{
if(head==NULL) exit(0);
if(pos<0) return false;
SingleList *p=head;
while(pos&&p!=NULL)
{
pos--;
p=p->next;
}
if(p==NULL)
return false;
SingleList *newNode=ApplyNode(val,p->next);
if(newNode==NULL)
return false;
p->next=newNode;
return true;
}
//链表反转
void Resever(SingleList *head)
{
if(head==NULL
||head->next==NULL
||head->next->next==NULL) exit(0);//为空或只有一个节点时
//使用两个指针
//就地逆转
SingleList *p=head->next;//逆转的节点
SingleList *q=p->next;//记录逆转节点的下一个
head->next = NULL;//头结点后置为空
while (p!= NULL)
{
//将p插入到头结点和头结点的下一个中间
p->next=head->next;
head->next=p;
//逆转节点往后挪
p=q;
if(q!=NULL)
{
q=q->next;
}
}
ShowList(head);
/*
//使用三个指针
SingleList *s=NULL;
SingleList *p = head->next;
SingleList *q = p->next;
while(p!= NULL)
{
p->next=s;
s=p;
p=q;
if(q!=NULL)
{
q=q->next;
}
}
head->next=s;
*/
}
这篇关于链表插入,反转的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!