链表的基本操作
来源:互联网 发布:win32编程是什么 编辑:程序博客网 时间:2024/06/06 01:16
链表
- 链表的插入
如图所示
插入操作时,需要获得插入位置的前一个节点,这样插入到前一个节点的后方,即插入到n位置,因为前一个节点的next原本指向后一个节点,即位置n(n从0开始,head不算)。
所以当n为0时,head指向位置为0的节点,操作为如下:
当n大于0时,操作如下:
// n == 0Node * p = new Node;p->data = data //数据赋值p->next = head; //插入节点尾指向前一个节点指向的节点head = p; //前一个节点指向插入节点
// n > 0Node * q = head; Node * p = new Node;p->data = data;// 寻找插入节点的前一个节点for (int i = 0; i < n - 1; ++i) { q = q->next;}p->next = q->next; // 插入节点尾指向前一个节点指向的节点q->next = p; // 前一个节点指向插入节点
- 链表的删除
观察上图的插入操作,可知删除操作一样需要得知删除节点前一个节点和删除节点,前一个节点的尾指向删除节点的尾即可从链中移除删除节点,最后再做清楚工作。
Node * q = head;// 寻找插入节点的前一个节点for (int i = 0; i < n - 1; ++i) { q = q->next;}Node * p = q->next; // p即为删除节点,因为前一个节点的尾指向删除节点q->next = p->next;delete p; // 清除数据
- 链表的替换
链表的替换与前面的操作不同,只需要找到位置为n的节点,将其元素改变即可,但是有些时候,需要进行,删除节点,插入节点操作,即链的替换,而非元素的替换。
Node * q = head;// 寻找位置为n的节点,所以不用-1for (int i = 0;i < n; ++i) { q = q->next;}// 替换操作q->data = data;
- 链表的检索
同理,检索时为了查看指定位置的元素,所以只需要找到节点即可。
Node * q = head;for (int i = 0; i < n; ++i) { q = q->next;}return q->data;
- 链表的遍历
遍历需要访问所有节点,代码如下
Node * q = head;// 当q不为NULL时为真while (q) { cout << q->data << " ";}cout << endl;
- 链表的清除
删除同样需要访问所有节点
while (head) { Node * q = head; head = head->next; delte q; // 可以加一步使q指向NULL // q = NULL;}
阅读全文
0 0
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- Find Duplicate Subtrees 解题心得
- 关于Python2和Python3
- codeforce 360 div1 a
- linux下安装think-captcha和加密解密的类
- iOS开发网络篇 一一 SDWebImage框架的基本使用
- 链表的基本操作
- springboot实现mqtt broker启动
- Android | 应用框架
- PAT 乙级 1080. MOOC期终成绩 (25)
- 子数组之和
- Java+Kotlin混合调用实现时光轴(ExpandableListView可扩展列表)
- keras cifar-10 加载数据失败 的解决办法
- spring工作流程
- 离职创业1年多,损失500万后,我总结了10条失败教训...