C++单链表基本算法实现

C++单链表基本算法实现

#ifndef LinkList_h
#define LinkList_h
#include <iostream>
using namespace std; template
<class T> struct Node{ T data; struct Node<T> * next; }; template <class T> class LinkList { public: LinkList(){front = new Node<T>; front->next = NULL;} LinkList(T a[],int n); ~LinkList(); void PrintList(); int GetLength(); Node<T> * Get(int i); int Locate(T x); void Insert(int i, T x); T Delete(int i); private: Node<T> * front; }; template <class T> LinkList<T>::LinkList(T a[], int n){ // front = new Node<T>; //头插法 // front->next = NULL; // for(int i = n-1; i>=0; i--){ // Node<T> *s = new Node<T>; // s->data = a[i]; // s->next = front->next; // front->next = s; // } front = new Node<T>; //尾插法 Node <T> * r = front; for(int i = 0;i<n;i++){ Node <T> *s = new Node<T>; s->data = a[i]; r->next = s; r = s; } r->next = NULL; } template <class T> LinkList<T>::~LinkList(){ Node <T> *p = front; while(p){ front = p; p = p->next; delete front; } } template <class T> Node<T> *LinkList<T>::Get(int n){ Node<T>* p = front->next; int j = 1; while (p && (j != n)){ p = p->next; j++; } if(!p) throw "查找位置非法"; else return p; } template <class T> int LinkList<T>::Locate(T x){ Node<T> * p = front->next; int j = 1; while(p){ if(p->data == x){ return j; }else{ p = p->next; j++; } } return -1; } template <class T> void LinkList<T>::Insert(int i, T x){ Node<T>* p = front; p = Get(i); if(p){ Node <T>*s = new Node <T>; s->data = p->data; s->next = p->next; p->next = s; p->data = x; } else{ throw "位置插入错误";} } template <class T> T LinkList<T>::Delete(int i){ Node <T> *p = front; if(i!=1) p = Get(i-1); Node<T>*q = p->next; p->next = q->next; T x = q->data; delete q; return x; } template <class T> int LinkList<T>::GetLength(){ if(!front->next) return 0; Node <T> *p = front->next; int j = 0; while(p){ p = p->next; j++; } return j; } template <class T> void LinkList<T>::PrintList(){ Node <T> *p = front->next; if(!p) {cout<< "链表为空列表!"<<endl; return; } cout<<"按顺序单链表的各个数据元素是:"<<endl; while(p){ cout<<p->data<<" "; p= p->next; } cout << endl; } #endif /* LinkList_h */

 

转载于:https://www.cnblogs.com/ycbeginner/p/10006328.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值