#include <iostream>
using namespace std;
struct node{
int val;
node * next;
};
node * create(){
node * head=new node;
head->next=NULL;
return head;
}
node * init(node * head,int n){
node * pre=head;
node * cur;
for(int i=0;i<n;i++){
cur=new node;
cin>>cur->val;
pre->next=cur;
pre=cur;
}
cur->next=NULL;
return head;
}
node * insert(node * head,int newval){
node * cur=head->next;
node * pre=head;
node * newnode=new node;
newnode->val=newval;
while(cur->val<newval){
pre=cur;
cur=cur->next;
if(cur==NULL) break;
}
pre->next=newnode;
newnode->next=cur;
return head;
}
void printLink(node * head){
node * p=head->next;
while(p){
cout<<p->val<<' ';
p=p->next;
}
}
int main() {
int n,newval;
cout<<"输入链表大小 ";
cin>>n;
node *head=create();
head=init(head,n);
cout<<"输入完毕,打印链表";
printLink(head);
cout<<"输入插入的新值";
cin>>newval;
insert(head,newval);
cout<<"输入完毕,打印新链表";
printLink(head);
return 0;
}