【数据结构】数组模拟链表

mac2022-06-30  63

数组模拟链表


前言

对于一个踏踏实实用数组的蒟蒻来说这真的是太难了好吗?


步骤

首先我们需要设一个数组date用来存原始数值和一个数组right充当指针 如图所示

这里的right指向date的下一位的date下标(注意是下标而不是数值)

我们现在尝试模拟一下在排序下插入一个数值6 明显需要插在date{3}和date{4}之间 直接把date{10}赋值成6 然后把right{3}赋值为10(说明date{3}后面连接的数为date{10}就是6) 接着把right{10}赋值为4(说明date{10}的下一位是date{4}就是8)

完成插入


程序实现

#include<iostream> using namespace std; int date[101],next[101],n;//我这里的right用next代替 int main() { cin>>n; for(int i=1;i<=n;i++) cin>>date[i];//输入date原始数值 for(int i=1;i<=n;i++) { if(i!=n)//判断是否是最后一位 next[i]=i+1;//因为是指向下一位的位置所以是i+1 else next[i]=0;//最后一位的下一个默认为0 } n++; cin>>date[n]; int t=1; while(t!=0)//到最后一位停止 { if(date[next[t]]>date[n])//判断date的下一位数值是否大于我们插入的新数值 { next[n]=next[t];//插入的数值连接到前一个date next[t]=n;//插入的数值连接到后一个date break;//跳出循环 } t=next[t];//没找到的话继续跳到下一个date查找 } t=1; while(t!=0) { cout<<date[t]<<" "; t=next[t]; } }

后记

图片来自《啊哈!算法》如有侵权通知即删上课的时候老师问会不会大家都说会然而向我一样的蒟蒻就呵呵了上课的时候不会一定要及时问啊!别害羞!如果有疑惑或者建议可以在讨论中提出来哦

转载于:https://www.cnblogs.com/BrokenString/p/9279551.html

相关资源:自行使用Java数组实现链表数据结构
最新回复(0)