赞
踩
你可以使用两个数组来模拟链表的行为。一个数组用于存储数据(data),另一个数组用于存储下一个元素的位置(right)。
data
数组用于存储链表中的数据元素。right
数组用于存储每个数据元素在 data
数组中下一个元素的位置索引。data
数组的末尾添加新的数据元素。right
数组的末尾添加下一个元素的索引,如果是链表的最后一个元素,则通常设置为 None
或者一个哨兵值(如 -1
)。data
数组的指定索引处插入新的数据元素。right
数组的相应位置插入新的下一个元素索引。注意,插入位置之后的所有元素索引都需要相应地更新,因为数组中的元素位置发生了变化。data
数组中移除指定索引处的元素。right
数组中对应位置的索引,以反映删除元素后链表结构的变化。同样,删除位置之后的所有元素索引都需要相应地更新。data
数组的第一个元素开始,使用 right
数组中的索引来跟踪下一个元素的位置。right
数组中的索引指向 None
或哨兵值,表示链表的结尾。data
数组,查找特定值的元素。data
数组中直接更新指定索引处的元素值。right
数组,因为更新元素不会改变链表的结构。data
和 right
数组以释放内存。- #include<iostream>
- #include<string.h>
- #define MAX 100
- using namespace std;
-
- int main(){
- int data[MAX+1],right[MAX+1];
- int n;
- cin>>n;
- for (int i = 1; i <= n; i++)cin>>data[i];
- for (int i = 1; i < n; i++)right[i]=i+1;
- right[n]=0;
- int t=1;
- //遍历
- while (t!=0)
- {
- cout<<data[t]<<"\t";
- t=right[t];
- }
- int insert;
- //插入节点
- cout<<'\n'<<"insert afer node:";
- cin>> insert;
- cout<<"insert data:";
- cin>>data[n+1];
- t=1;
- while (t!=0)
- {
- if (data[t]==insert)
- {
- right[n+1]=right[t];
- right[t]=n+1;
- }
- t=right[t];
- }
- //遍历
- t=1;
- while (t!=0)
- {
- cout<<data[t]<<"\t";
- t=right[t];
- }
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。