链表增删改查
来源:互联网 发布:尉迟琳嘉 知乎 编辑:程序博客网 时间:2024/05/20 17:25
#include <iostream>using namespace std;typedef int T;class List{struct Node{T data;Node *next;Node(const T &d=T()):data(d),next(NULL){};//node构造函数,T()零初始化};Node *head;int len;public:List():head(NULL),len(0){};void push_front(const T&d){//前插//Node *p=new Node(d);//p->next=head;//head=p;insert(d,0);}List& push_back(const T&d){//尾插insert(d,size());return (*this);}int size()const{//遍历return len;}Node *&getptr(int pos)//找到指定位置的指针{if(pos<0||pos>size()) pos=0;if(pos==0) return head;Node *p=head;for(int i=1;i<pos;i++){p=p->next;}return (*p).next;}void insert(const T&d,int pos){//插入任意位置Node *&p=getptr(pos);Node *n=new Node(d);n->next=p;p=n;}void travel()const{//遍历Node *p=head;while(p!=NULL){cout<<p->data<<' ';p=p->next;}cout<<endl;}void clear(){//释放while(head!=NULL){Node *p=head->next;delete head;head=p;}}void erase(int pos){if(pos<0||pos>=size()) return;Node *pn=getptr(pos);Node *p=pn;pn=pn->next;delete p;--len;}int find(const T& d)const{int pos=0;Node *p=head;while(p!=NULL){if(p->data==d) return pos;p=p->next;pos++;}return -1;}void remove(const T&d){//删除int pos;while((pos=find(d))!=-1)erase(pos);}void set(int pos,const T&d){//修改if(pos<0||pos>=size())return ;getptr(pos)->data=d;}~List(){clear();};};int main(void){List l;l.push_front(10);l.push_front(20);l.push_front(30);l.push_back(50);l.insert(40,2);l.travel();return 0;}
0 0
- 链表增删改查
- 链表的增删改查
- C链表的增删查改
- 链表的增删改查
- java实现链表,增删改查
- 链表的增删改查
- 链表的增删改查
- 链表的增删改查
- 单向链表的增删改查
- 双向链表的增删改查
- 链表的增删改查
- 链表的增删改查
- 双向链表的增删改查
- C语言链表,增删改查
- python链表的增删改查
- 链表的增删改查
- 创建表增删改查
- MySQL 表增删改查
- iOS测试——置换测试: Mock, Stub 和其他
- Windows调试的基石——符号(1)
- Zookeeper
- HDU 4975 A simple Gaussian elimination problem. 网络流+矩阵上的dp
- 【Qt编程】基于Qt的词典开发系列<十五>html特殊字符及正则表达式
- 链表增删改查
- phpcms 设置手机站点 但是状态是未开启还不知道什么原因
- ReactiveCocoa 扯淡加解释片
- 仿真物理实验室
- 全国(大学)高等教育各学科视频教学全集
- orecle笔记4.11
- Java编程思想笔记_第9章 接 口
- tcpdump 用法
- 虚函数与抽象基类的应用