//插入结点
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef struct LNode{
int data; //定义链表数据域
struct LNode *next; //定义后继节点
}LNode,*Linklist;
//尾插法
Linklist Creat_list(int count){
Linklist head = (Linklist)malloc(sizeof(LNode)); //为头指针开辟内存
Linklist node = NULL; //定义工作指针
Linklist end = NULL; //定义尾指针
head->next = NULL; //初始化头指针的下一个为空
end = head;
int data;
for(int i=0;i<count;i++){
scanf("%d",&data);
node = (LNode*)malloc(sizeof(LNode)); //为新结点开辟内存
node->data=data; //新结点数据域赋值
end->next=node; //新结点赋值给尾结点的下一个
end=node; //重新定义尾结点
}
end->next=NULL;
return head;
}
//插入结点
bool add(LNode *L,int addn){
LNode *p=L,*q=L->next;
LNode *node;
int j=0;
while(p && j<addn){
p=q; q=q->next;++j;
}
if(!p && j>addn)
return false;
node = (LNode*)malloc(sizeof(LNode));
node->data = addn;
node->next = p->next;
p->next = node;
return true;
}
void output(Linklist head){
Linklist a = head->next;
while(a){
printf("%d",a->data);
printf(" ");
a=a->next;
}
}
int main(){
int n,m;
scanf("%d",&n);
scanf("%d",&m);
LNode* head = Creat_list(n);
add(head,m);
output(head);
}