概述
逆序生成函数
适用于生成n个节点的逆序链表。
node* reverse_add(int n)
{
node *p,*head;
head=new node;
head->next=NULL;
while(n--){
p=new node;
cin>>p->data;
p->next=head->next;
head->next=p;
}
return(head);
}
顺序生成函数
适用于生成n个节点的顺序链表。
node * add_farward( int n)
{
node *head,*p,*tail;
head=new node;
tail=head;
while(n--)
{
p=new node;
cin>>p->data;
//p->next=NULL;//实验结果 可有可无
tail ->next=p;
tail=p;
}
return head;
}
打印链表
适用于打印单个链表
void view(node * head)
{
node *p;
p=head->next;
while(p)
{
p->next!=NULL?cout<<p->data<<' ':cout<<p->data<<endl;
p=p->next;
}
}
增加节点函数
适用于对链表head增加一个p节点的data值
node* ad(node *head,int m)
{
node *p;
{
p=new node;
p->data=m;
p->next=head->next;
head->next=p;
}
return(head);
}
拆分函数
运用了全局变量
void split(node * head)
{
node *p;
p=head->next;
node *q=new node;
head1=new node;
head2=new node;
//head1->next=NULL;
//head2->next=NULL;
// pp=head2->next;
while(p)
{
if(p->dt%2==0)
{
ad(head2,p->dt);
num1++;
}
else
{
ad(head1,p->dt);
num2++;
}
p=p->next;
}
// return head2;
}
链表的归并
适用于按顺序(升序)归并两个有序链表
node * merge_(node * head1,node * head2)
{
node *p1,*p2,*tail;
p1=head1->next;
p2=head2->next;
tail=head1;
free(head2);
while(p1&&p2)
{
if(p1->data<p2->data)
{
tail->next=p1;
tail=p1;
p1=p1->next;
}
else
{
tail->next=p2;
tail=p2;
p2=p2->next;
}
}
if(p1)
tail->next=p1;
else
tail->next=p2;
return head1;
}
最后
以上就是炙热电源为你收集整理的链表的各种操作函数总结的全部内容,希望文章能够帮你解决链表的各种操作函数总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复