C++数据结构之链表
来源:互联网 发布:彩妆淘宝店找货源 编辑:程序博客网 时间:2024/06/06 20:31
C++数据结构------链表
体会引用的强大,
定义一个Node 存放一个data和指向下一个节点的指针next;
定义一个类 存放链表的头指针
typedef int T; struct Node{ T data; Node* next; Node(const T& d=T()):data(d),next(NULL){}};class List{ Node* head;};
插入删除一个节点:获取某个成员的成员指针,引用!
经典insert&&getptr函数:
Node*& List::getptr(int pos)//返回第K个成员的成员指针引用! { if(pos>size()||pos<0) return head; if(pos==0) return head; Node* p=head; for(int i=1;i<pos;i++) { p=p->next; } return (*p).next; } void List::insert(const T& d,int pos) { Node*& pn = getptr(pos);//注意引用!一直引用! Node* p=new Node(d); p->next = pn->next; pn=p; }
链表提供增删查改功能,注意内存释放clear()
void List::clear() { while(head) { Node* p=head->next; delete head; head=p; } }
删除节点:
假设删除第K个节点,getptr()获得指向第K个节点的指针的引用pn,
ptemp=pn;
delete ptemp;//释放第K个节点.
pn=pn->next;
倒置一个链表:
我的算法:开辟数组Node* ptr[size()],遍历链表依次将各个指向节点的指针存放到数组中,循环交换 size()/2 次节点的data。
Node* ptr[len]; for(i=1;i<len;i++) ptr[i]=ptr->next; for(i=0;i<len/2;i++) SWAP(ptr[i]->data,ptr[len-i-1]->data);
SWAP交换实现:int a,b;a^=b;b^=a;a^=b;巧用异或运算。
0 0
- C - 数据结构之链表
- 数据结构之链表(C/C++)
- c语言数据结构之链表
- 数据结构之c语言链表
- C语言数据结构之双向链表
- 数据结构之链表(c)
- 数据结构之链表(C实现)
- C 语言 数据结构之双向链表
- C - 数据结构之 循环链表
- 数据结构之链表——c
- 数据结构之链表(C实现)
- 数据结构之链表编程(C++)
- c语言数据结构之通用链表
- 数据结构之线性表(C#)
- 数据结构之单循环链表C++(模板)
- 数据结构之链表的使用【C语言】
- 数据结构学习笔记之链表(C语言版)
- 数据结构之---c语言实现双向链表操作
- HDU5203 Rikka with wood sticks
- java代码实现商品类别的无限级分类显示
- SQL Server查询分页技术
- Apache 配置虚拟
- 怎么理解并发多进程服务和多线程服务器
- C++数据结构之链表
- 关于我的新网站
- myeclipse报错An error has occurred. See error log for more details. com/genuitec/eclipse/j2eedt/core/J
- 步步为营_Android开发课[21]_用户界面之Notification(通知栏)
- Hduoj1074【DP状态压缩】
- USACO:2.1.5 Hamming Codes 汉明码
- datastage报Windows Scripting Engine错误的解决办法
- 智能指针陷阱
- 细说 HttpHandler 的映射过程