#include<stdio.h>
#include<stdlib.h>
//这里创建一个结构体指针用来表示链表的结点类型
struct node
{
int date;
struct node *next;
};
int main()
{
struct node *p,*q,*t,*head;
int i,n,a;
scanf("%d",&n);
head=NULL;//头指针为空
for(i=0; i<n; i++)//循环读入n个数
{
scanf("%d",&a);
//动态申请一个空间,用来存放一个结点,并用临时指针p指向这个结点
p=(struct node *)malloc(sizeof(struct node));
p->date=a;//将数据存储到当前结点的date域中
//p->next=NULL;
if(head==NULL)
head=p;//如果这是第一个创建的结点,则头指针指向这个结点
else
q->next=p;//如果这不是第一个创建的结点,则将上一个结点的后继指针指向当前结点
q=p;//指针p指向当前结点
}
q->next=NULL; //最后将结点指向空
scanf("%d",&a); //读入一个待插数
t=head;//从链表头部开始遍历
while(t!=NULL)//当没有达到链表尾部时继续循环
{
if(t->next==NULL||t->next->date>a)
//如果当前结点是最后一个结点或则下一个结点的值大于待插数的时候插入
{
p=(struct node *)malloc(sizeof(struct node)); //动态申请一个空间,用来存放一个新结点,
p->date=a;
p->next=t->next;//新结点的后继指针指向当前结点的后继指针所指向的结点
t->next=p;//当前结点的后继指针指向新的结点
break;//差入完毕后退出循环
}
t=t->next;//继续下一个结点
}
//输入链表中的所有数
t=head;
while(t!=NULL)//当前结点为空时退出
{
printf("%d ",t->date);
t=t->next;//继续下一个结点
}
return 0;
}