线性表--链表
2015-08-10 14:35
337 查看
链表的使用及简单功能
慢慢分析链表的结构和操作其实并不麻烦。
template <typename T> typedef struct Node { T Data; struct Node *Next; } List; List L,*PtrL; //求表长 int Length(List *PtrL) { List*p=PtrL;//指向表头 int j=0; while(p)//到表尾 { P=p->Next; j++; } return j; } /*查找*/ //1.按序号查找 List *FiindKth(int k,List *PtrL) { List *p=PtrL; int i=1; while(p!=NULL&&i<k) { p=p->Next; i++; } if(i==k)return p; else return NULL; } //2.按值查找 template <typename T> List *Find(T k,List*PtrL) { List*P=PtrL; while(p->Next!=NULL&&p->Data!=k) p=p->Next; return p; } /*插入结点*/ template <tempname T> List *Insert(T X,int i,List*PtrL) { List*p,*s; if(i==1)//当插入结点为表头时 { s=new List; s->Data=X; s->Next=PtrL; return s; } p = FindKth( i-1, PtrL ); /* 查找第i-1个结点 */ if(p==NULL) { cout<<"参数错误"<<endl; return NULL; } else { s=new List; s->Data=X; s->Next=p->Next;//插入第i-1结点后面 p->Next=s; return PtrL; } } /*删除结点*/ List *Delete(int i,List*PtrL) { List*p,*s; if(i==1) { s=PtrL; if(PtrL!=NULL)PtrL=PtrL->Next; else return NULL: delete s;//释放该结点的空间,防止内存溢出 return PtrL; } P=FindKth(i-1,PtrL); if(p==NULL) { cout<<"该结点不存在"<<endl; return NULL; } else if (p->Next==NULL) { cout<<"该结点不存在"<<endl; return NULL; } else { s=p->Next;//s指向第i个结点 p->Next=s->Next; delete s; return PtrL;//返回表头 } }
慢慢分析链表的结构和操作其实并不麻烦。
相关文章推荐
- IOS开发—UIScrollView自动布局
- java static
- SQL性能调优
- 九度OJ 题目1464:Hello World for U
- Eclipse快捷键 10个最有用的快捷键
- 关于vs2013中使用partial类后仍提示某成员变量不存在时的问题解决
- Repeater添加一列序号列
- js 各种常用js验证
- Spring学习笔记二(Bean注入的几种方式)
- 最长上升子序列(矩形嵌套)
- eclipse导入外部maven工程后报the superclass.. was not found
- MySQL 序列生成函数
- 深入浅出 MFC多视图
- 【暑期基础3】A HDU 2053 Switch Game
- Apache Shiro 标签方式授权
- Android BLE开发之BluetoothGatt status 133
- POJ 1639 最小度限制生成树
- Lua笔记10-非全局函数
- POJ 3259Wormholes
- 正则表达式验证数字的两种方法