博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 循环链表基本算法
阅读量:6170 次
发布时间:2019-06-21

本文共 2149 字,大约阅读时间需要 7 分钟。

C++ 循环链表基本算法

#ifndef CLinkList_h#define CLinkList_h#include 
using namespace std;template
struct Node{ T data; struct Node
* next;};template
class CLinkList{public: CLinkList(){rear = new Node
; rear ->next = rear;} CLinkList(T a[], int n); ~CLinkList(); int GetLength(); Node
* Get(int i); int Locate(T x); void Insert(int i, T x); T Delete( int i); void PrintList(); void Connect(CLinkList
&b);private: Node
*rear;};template
CLinkList
::CLinkList(T a[], int n){ rear = new Node
; rear->next = rear; for(int i = 0;i< n;i++){ Node
* s = new Node
; s->data = a[i]; s->next = rear->next; rear->next = s; }}template
CLinkList
::~CLinkList(){ rear = rear->next; Node
*p = rear->next; Node
*q; while(p!=rear){ q = p->next; delete p; p = q; //delete rear; } rear->next = rear;}template
int CLinkList
::GetLength(){ if(rear->next == rear) return 0; Node
* p = rear->next; int j = 0; while (p!= rear){ p= p->next; j++; } return j;}template
Node
* CLinkList
::Get(int i){ if(i<1) throw " 查找位置错误"; Node
* p = rear; for(int j = 0; j< i;j++){ p = p->next; } return p; }template
int CLinkList
:: Locate(T x){ Node
* p = rear->next; int j = 1; while(p!= rear){ if(p->data == x){ return j; }else{ p = p->next; j++; } } return -1;}template
void CLinkList
::Insert(int i, T x){ if(i<1 || i> GetLength()) throw"位置插入错误"; Node
* p = rear; p = Get(i); Node
*s = new Node
; s->data = p->data; s->next = p->next; p->next = s; p->data = x;}template
T CLinkList
:: Delete( int i){ if(i<1 || i> GetLength()) throw"位置错误"; Node
* p = rear->next; int j = 1; while(j
next; j++; } Node
* s = p->next; p->next = s->next; if(s == rear){ rear = p; } T x = s->data; return x; }template
void CLinkList
:: PrintList(){ Node
*p = rear->next; if(p->next == rear) {cout<< "链表为空列表!"<
data<<" "; p= p->next; } cout << endl;}template
void CLinkList
::Connect(CLinkList
&b){ Node
*q = b.rear->next; b.rear->next = rear->next; rear->next = q->next; rear = b.rear; delete q;}#endif /* CLinkList_h */

 

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

你可能感兴趣的文章
数据库锁和数据库隔离级别
查看>>
Linux下的内核测试工具——perf使用简介
查看>>
《从问题到程序:用Python学编程和计算》——2.3 内置函数和数学函数包
查看>>
《Photoshop修饰与合成专业技法》目录—导读
查看>>
《Metasploit渗透测试手册》—第1章1.10节分析数据库中存储的渗透测试结果
查看>>
《Adobe Acrobat XI经典教程》—第2课减小文件大小
查看>>
《数据库技术原理与应用教程》一第2章 数据库的基础知识
查看>>
QuaggaJS —— 纯 JavaScript 开发的条形码扫描
查看>>
在图片中加入噪点就能骗过 Google 最顶尖的图像识别 AI
查看>>
免费下载!业界首部安卓热修复宝典出炉,阿里技术大牛联袂推荐
查看>>
OpenID 关联认证提供 CoreOS dex
查看>>
《Node.js区块链开发》一2.2 信用,决定着利益转移的方向
查看>>
Speedy:来自京东的 Docker 镜像存储系统
查看>>
《动手玩转Arduino》——11.2 众多的Arduino板
查看>>
IBM Watson 进入癌症基因组分析市场
查看>>
在 Linux 中查看你的时区
查看>>
Linux集群和自动化维1.6 小结
查看>>
《OpenACC并行编程实战》—— 第1章 并行编程概览 1.1 加速器产品
查看>>
C语言OJ项目参考(2417) 字符串长度
查看>>
ajax的手写、封装和自定义设置
查看>>