Linklist
来源:互联网 发布:浙江淘宝总部地址 编辑:程序博客网 时间:2024/05/16 02:21
</pre><pre name="code" class="cpp">#ifndef Linklist_H //避免重复包含Linklist.h头文件#define Linklist_H template<class DataType> //定义单链表的结点struct Node{DataType data;Node<DataType> *next;};template <class DataType> //类Linklist的声明class Linklist{public:Linklist();Linklist(DataType a[],int n); //建立有n个元素的单链表~Linklist(); //析构函数int Locate(DataType x); //在单链表中查找值为x的元素序号void Insert(int i,DataType x); //在第i个位置插入元素值为x的结点DataType Delete(int i); //在单链表中删除第i个结点void PrintList(); //按序号依次输出各元素private:Node<DataType>*first; //单链表的头指针};#endif
#include<iostream> //引入输入输出流using namespace std;#include"Linklist.h" //引入类Linklisttemplate <class DataType> //类Linklist的成员函数定义Linklist<DataType>::Linklist(){first=new Node<DataType> //生成头结点first->next=null; //头结点的指针域置空}template <class DataType>Linklist<DataType>::Linklist(DataType a[],int n){Node<DataType>*r,*s;first=new Node<DataType>; //生成头结点r=first; //尾指针初始化for(int i=0;i<n;i++){s=new Node<DataType>; //为每个数组元素建立一个结点s->data=a[i]; //将结点s插入到终端结点之后r->next=s;r=s;}r->next=NULL; //将终端结点的指针域置空}template<class DataType>Linklist<DataType>::~Linklist(){Node<DataType>*q=NULL; //释放单链表的每一个结点的存储空间while(first!=NULL){q=first; //暂存被释放结点first=first->next; //first指向被释放结点的下一个结点delete q;}}template<class DataType>void Linklist<DataType>::Insert(int i,DataType x){Node<DataType>*p=first,*s=NULL; //工作指针p指向头结点int count=0;while(p!=NULL&&count<i-1) //查找第i-1个结点{p=p->next; //工作指针p后移count++;}if(p==NULL)throw"位置"; //没有找到第i-1个结点else{s=new Node<DataType>;s->data=x; //结点s的数据与为xs->next=p->next;p->next=s; //将结点s插入到结点p之后}}template<class DataType>DataType Linklist<DataType>::Delete(int i){ Node<DataType>*p=first,*q=NULL;DataType x;int count=0;while(p!=NULL&& count<i-1){p=p->next;count++;}if(p==NULL||p->next==NULL)throw"位置";else{q=p->next;x=q->data;p->next=q->next;delete q;return x;}}template<class DataType>int Linklist<DataType>::Locate(DataType x){Node<DataType>*p=first->next;int count=1;while(p!=NULL){if(p->data==x)return count;p=p->next;count++;}return 0;}template<class DataType>void Linklist<DataType>::PrintList(){Node<DataType>*p=first->next;while(p!=NULL){cout<<p->data<<"";p=p->next;}cout<<endl;}
#include<iostream> //引入输入输出流using namespace std;#include"Linklist1.cpp" void main(){int r[5]={1,2,3,4,5}; Linklist<int>L(r,5);cout<<"执行插入操作前数据为:"<<endl;L.PrintList(); //显示链表中的所有元素try{L.Insert(2,3); //在第2个位置插入值为3的元素}catch(char*s){cout<<s<<endl;}cout<<"执行插入操作后数据为:"<<endl;L.PrintList(); //显示单链表的所有元素cout<<"值为5的元素位置为:";cout<<L.Locate(5)<<endl; //查找元素5,并返回在单链表中位置 cout<<"执行删除操作前数据为:"<<endl;L.PrintList(); //显示单链表的所有元素try{L.Delete(1); //删除第1个元素}catch(char *s){cout<<s<<endl;}cout<<"执行删除操作后数据为:"<<endl;L.PrintList(); //显示单链表的所有元素}
0 0
- LinkList
- LinkList
- LinkList
- linklist
- Linklist
- LinkList
- LinkList Operation
- linklist Qsort
- GetElem-LinkList
- ListInsert-LinkList
- ListDelete-LinkList
- CreateListTail-LinkList
- CreateListHead-LinkList
- linklist----reverse
- linkList源码
- 手写LinkList
- 链表linklist
- LinkList链表
- WPF Silverlight Button样式
- web.xml 中配置加载顺序
- php大小写问题
- Protocol Buffers(protobuf)在Java开发中使用
- Linux Slub分配器(一)--概述
- Linklist
- Linux rpm 命令参数使用详解[介绍和应用]
- Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs OrientDB vs Aerospike vs N
- udev使用笔记
- IOS UIScrollView的自动布局
- 你若不来,我又怎敢老去
- 导航栏中间按钮的设置
- web工程理解
- effective STL 条款27 和 条款28