所以我搞不来

其实完全可以用排序做,但是链表刚学,所以拿几道题试试水(然后水把我淹死了)
虽然意义不大,但是能帮我熟悉一下链表的操作,所以话求求了
#include<bits/stdc++.h>
using namespace std;
struct Node{
int value;
Node *next;
}a[100001],*head;
int n;
int main() {
scanf("%d", &n);
head=NULL;
for(int i=1;i<=n;i++){
scanf("%d",&a[i].value);
}
for(Node *t=head;t;t=t->next){
for(Node *p=t->next;p;p=p->next){
if(t->value>p->value){
t->next=p->next;
p->next=t;
}
}
}
for(Node *p=head;p;p=p->next){
printf("%d ",p->value);
}
}
我想在两根线的中间那段代码中一边读入,一边加节点,但是不知道怎么操作,求大佬帮忙(没有任何操作,就是单纯的加节点)
然后就是如果可以,可以帮忙看一看我后面的代码中所实现的冒泡是对的吗?尽管知道怎么搞,但是转成链表了可能会出错