C++ 链表(list)问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 12:04:49
我想随机访问链表中的某个元素应该怎么做!

有好的回答可以增加150分!

不存在随机问题

因为不是连续地址,没有办法做到.

即是写成 list *l

l[i] 这样的形式,个人觉得仍然不能算是随机,还是要通过连表头,一项一项查过去

重在[]吧,那样还像点

需要重载2个,一个是做左值的,一个右值的

1. 增加一个变量记录链表的长度,如length;
2. 用rand函数产生一个随机数n,1 <= n <= length;
3. 通过循环访问某个链表元素,如
ListNode *cursor = head;
for (int i = 1; i < n; ++n)
{
cursor = cursor->next;
}

cout << cursor->data << endl;

你可以自己写一套机制,重载[]操作符,然后把异常考虑进来,主要是解决下标越界的问题。

二楼的方法不错~