#include<iostream>
#define n 9
using namespace std;
int main(){
int data[101],right[101];
int i,t,len;
//读入已有的数
cout<<"依次读入已有的数"<<endl;
for(i=1;i<=n;i++){
cin>>data[i];
}
len=n;
//初始化数组right
for(i=1;i<=n;i++){
if(i!=n){
right[i]=i+1;
}
else{
right[i]=0;
}
}
//直接在数组data的末尾增加一个数
len++;
cout<<"请输入要在原数组中增加的数:";
cin>>data[len];
//从链表的头部开始遍历
t=1;
while(t!=0){
if(data[right[t]]>data[len]){//如果当前结点下一个结点的值大于带插入数,将数插入到中间
right[len]=right[t];//新插入数的下一个结点编号等于当前结点的下一个结点编号
right[t]=len;//当前结点的下一个结点编号就是新插入数的编号
break;//插入完成跳出循环
}
t=right[t];
}
//输出链表中所有的数
t=1;
while(t!=0){
cout<<data[t]<<" ";
t=right[t];
}
return 0;
}
/*
模拟链表
链表的每一个结点只有两个部分:
用一个数组data来存储序列中的每一个数,
再用一个数组right来存储序列中每一个数右边的数。
第一个整型数组data是用来存放序列中具体数字的,
另外一个整型数组right是用来存放当前序列中每一个元素右边的元素在数组data中位置的。
例如:right[1]=2,就表示当前序列中1号元素右边的元素存放在data[2]中;
right[9]=0,就表示当前序列中9号元素右边没有元素;
*/
2.5模拟链表
最新推荐文章于 2023-12-20 13:35:53 发布