#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct Node
{
int data;
struct Node *next;
}NODE,*PNODE;
void initlist(PNODE &H);
void inputlist(PNODE &H,int n);
void insertlist(PNODE &H,int m);
void deletelist(PNODE &H,int a);
void outputlist(PNODE H);
void lenlist(PNODE &H);
void sortlist(PNODE &H,int n);
int main()
{
int n,m,a;
cin>>n;
PNODE H;
initlist(H);
inputlist(H,n);
outputlist(H);
insertlist(H,m);
outputlist(H);
cin>>a;
deletelist(H,a);
outputlist(H);
lenlist(H);
sortlist(H,n);
outputlist(H);
//sortlist(H);
}
void initlist(PNODE &H)
{
H = new NODE;
H->next=NULL;
}
void inputlist(PNODE &H,int n)
{
PNODE p,q;
initlist(p);
int i=1;
p=H;
while(i<=n)
{
initlist(q);
cin>>q->data;
p->next=q;
p=q;
i++;
}
return;
}
void outputlist(PNODE H)
{
PNODE p;
initlist(p);
p=H->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
void insertlist(PNODE &H,int m)
{
PNODE p,q;
initlist(p);
initlist(q);
cin>>m;
p=H;
q->data=m;
q->next=p->next;
p->next=q;
}
void deletelist(PNODE &H,int a)
{
int j=0;
PNODE p = new NODE;
initlist(p);
p = H;
while (NULL != p && j<a-1)
{
p = p->next;
j++;
}
PNODE q = new NODE;
initlist(q);
q = p->next;
//删除p结点后面的q结点。
p->next=p->next->next;
delete(q);
q=NULL;
}
void lenlist(PNODE &H)
{
PNODE p=new NODE;
initlist(p);
p=H;
int n=0;
while(p!=NULL)
{
p=p->next;
n++;
}
cout<<n-1<<endl;
}
void sortlist(PNODE &H,int n)
{
int i,j,t;
PNODE p = new NODE;
initlist(p);
PNODE q = new NODE;
initlist(q);
for(i=0,p=H->next;i<n-1;i++,p=p->next)
{
for(j=i+1,q=p->next;j<n;j++,q=q->next)
{
if(p->data > q->data)
{
t=p->data;
p->data=q->data;
q->data=t;
}
}
}
}