您的位置:首页 > 其它

链表插入(线性表)

2014-04-02 22:47 253 查看
Description

(线性表)已知一单向链表,从第二个结点至表尾递增有序,(设a1<x<an)如下图(“第二个结点至表尾”指a1..an )。试编写程序,将第一个结点删除并插入表中适当位置,使整个链表递增有序。

Input

输入长度n:7

输入数据:4 1 2 3 6 8 9

Output

1 2 3 4 6 8 9

Sample Input

5

11 7 8 9 10

Sample Output

7 8 9 10 11

#include <iostream>
using namespace std;

struct number
{
int num;
number *next;
};
number *creatlink(number *head,int n);
number *insertlink(number *head);
int main()
{
number *p,*head;
head=NULL;
int n;
cin>>n;
head=creatlink(head,n);
head=insertlink(head);
p=head;
while(p!=NULL)
{cout<<p->num<<' ';
p=p->next;
}
return 0;
}
number *creatlink(number *head,int n)
{
number *p,*s;
p=head;
int i;
for(i=0;i<n;i++)
{
s=new number;
cin>>s->num;
if(head==NULL)
head=s;
else
p->next=s;
p=s;
}
p->next=NULL;
return head;
}
number *insertlink(number *head)
{
number  *p,*s,*q;
p=head;
s=new number;
s->num=p->num;
head=p->next;
p=head;
if(head==NULL)
head=s;
else
{
while(s->num>p->num&&p->next!=NULL)
{q=p;
p=p->next;
}
if(s->num<=p->num)
{if(head==p)
{head=s;
s->next=p;
}
else
{q->next=s;
s->next=p;
}
}
else
{
p->next=s;
s->next=NULL;
}
}
return head;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐