数组模拟单链表
struct node{
int data;
struct node *next;
};
数组模拟单链表,定义b[15]数组元素是结构体中的data元素,right[15]是next一个元素指向,在当前元素之前,插入新元素。
void createData(){
int a[13] = {0};//防止初始化重复元素过滤
int b[15] = {0};
int right[15] = {0};
memset(right,-1,sizeof(right));
srand((unsigned int)time(NULL));
int n = 10;
for (int i = 0; i < n; ++i) {
int temp = rand()%12+1;
if (a[temp]) {
--i;
continue;
}
a[temp] = 1;
b[i] = temp;
right[i] = i+1;
printf("%d ",b[i]);
}
right[n-1] = -1;//这个是n-1这个元素为-1标记
printf("\n");
b[n] = 3;//这个是插入的元素,可以改成自己输入的元素
//开始插入元素
for (int i = 0;i != -1;) {
if (b[right[i]] > b[n]) {
right[n] = right[i];//将当前的序号后移到n
right[i] = n;//在位置插入n
break;
}
i = right[i];
}
for (int i = 0;(i != -1)&&(b[i] > 0);i = right[i]) {
printf("%d ",b[i]);
}
printf("\n");
}