求助大佬,这个怎么做?

依次输入10个数(a1-a10),将10个数据存储到链表中:将这10个数重新排列为以al为界的两部分;a1前面值都比a1小,a1后面的 值都比al大,输出排列结果。


#include<iostream>
using namespace std;
//此函数将数列划分成两部分,以数列第一个元素为键值。
void devide(int *a, int n)
{
int i, p = 0, t;
for(i = p + 1; i < n; ++i)
{
// 遍历数列,每当遇到一个比键值小的数时,将其与左边第P个位置上的数字交换,由此保证最左边的P个数均小于键值。
if(a[i] < a[0] && i > ++p)
{
t = a[p];
a[p] = a[i];
a[i] = t;
}
}
// 将第一个元素与第P个元素位置交换,完成整个过程。
if(p > 0)
{
t = a[p];
a[p] = a[0];
a[0] = t;
}
}
// 输出结果
void print(int *a, int n)
{
int i;
for(i = 0; i < n; ++i)
{
cout<< a[i] <<" ";
}
}
void main()
{
int a[10];
cout<<"请输入10个数"<<endl;
for(i = 0; i < 10; ++i)
{
    cin>>a[i];
}
devide(a, 10);
print(a, 10);
return 0;
}