面试题5:获取单链表指定位置的元素
2016-03-27 22:55 Keiven_LY 阅读(1754) 评论(0) 编辑 收藏 举报在线性表的顺序存储结构中,我们要计算任意一个元素的存储位置是很容易的。因为线性表的顺序存储就是个数组嘛,比如要获取第5个元素,可以直接a[5]就行了。但在单链表中,由于第i个元素到底在哪是没办法一开始就知道,必须得从头开始找。
基本思路:
- 声明一个结点p指向链表头结点,初始化i从0开始;
- 当i < pos时,就遍历链表,让p的指针向后移动,不断指向下一结点,i累加1;
- 若到链表末尾P为空,则说明第pos个元素不存在;
- 否则査找成功,返回结点p的数据。
功能函数:
/* 获取指定位置的元素 */ int GetElem(Node *head, int pos) { Node *p = head; //声明一个结点p,指向头结点 int i = 0; while(p && i < pos) { p = p->next; ++i; } if(!p || i > pos) { cout << "第" << pos << "个元素不存在" << endl; } int getData = p->data; return getData; }