考虑全面的链表插入 - c++
来源:互联网 发布:网上发短信软件 编辑:程序博客网 时间:2024/05/24 06:47
(一)不带头节点的单向链表:
链表插入:struct node{ int data; node *next; };bool insertLinkList(node **head,int pos,int value){//向头指针为head的链表中pos位置处插入值为value的节点 if(pos < 0)//位置判定 return false; node *ele = new node(); if(!ele)//总是在分配完内存后,检验内存是否分配成功 return false; ele -> data = value; if(!(*head) || pos == 0){//如果是空链表或者是在表头插入,需要修改head的值 ele -> next = *head;//先连 *head = ele;//后断 return true; } node *p = *head; int j = 0; while(j < (pos-1) && p){//p指向pos-1处的节点 j++; p = p->next; } if(!p) return false; ele -> next = p ->next; p -> next = ele; return true;}测试: node *head = NULL;//init head insertLinkList(&head,1,2);//成功插入 insertLinkList(&head,3,2);//超过表长度,插入不成功 insertLinkList(&head,1,2);//成功插入
(二)带头节点的单向链表:
大部分情况下是此类链表,好处:统一了第一位置和其他位置的操作
bool insertLLHeadnode(node *head,int pos,int value){//头节点不算真正的元素节点,pos实际上从第二个节点开始计数,从0开始 if(pos < 0) return false; node *p = head; int j = 0; while(j < pos && p){ j++; p = p->next; } if(!p) return false; node *ele = new node(); if(!ele) return false; ele -> data = value; ele -> next = p ->next; p -> next = ele; return true;}
测试:
node *head = new node();//init head head->next = NULL; insertLLHeadnode(head,0,1); insertLLHeadnode(head,1,2); insertLLHeadnode(head,2,3); insertLLHeadnode(head,4,3); insertLLHeadnode(head,3,11); viewAllElements(head);输出:1 2 3 11
- 考虑全面的链表插入 - c++
- 全面考虑 ,修炼思维
- 数值的整数次方---考察是否考虑的全面
- 一个全面的UI系统应该考虑的东西
- C语言—链表的插入
- 链表C 链表的结点插入
- 大学毕业出路利弊一览表~比父母考虑的更全面
- leetcode Add Two Numbers 没什么好说的,考虑全面即可~
- Codeforces 3C tic-tac-toe 考虑问题要全面点
- C语言开发需考虑的细节
- c语言 链表插入
- C语言链表插入
- 【C】单向链表和双向链表的插入
- 链表的查找和插入(c语言)
- C语言链表的插入和删除、建立
- 单向链表的插入、查找和遍历方法 (c)
- C有序链表的终极插入函数
- C语言链表的建立、插入和删除
- POJ3633
- startup,startup mount,startup nomount之间的区别
- Cocos2d-X 程序是如何开始运行与结束的
- gmake和make、nmake、Dmake
- 改变图片大小
- 考虑全面的链表插入 - c++
- QT获取系统时间
- Windows Mobile C#实现GIF图片播放
- [翻译][Trident] Storm Trident 教程
- sqlite第三方类库:FMDB使用(转载)
- Android天气预报各种天气API
- QQ漫游消息、上传消息使用方法略记--希望能帮到有需要的人:测试版本为QQ2013(小版本没看)
- 使android service在进程清理时不被结束
- 用C#读写文本文件