数据结构 循环链表
来源:互联网 发布:淘宝店铺封了怎么解封 编辑:程序博客网 时间:2024/05/20 11:50
循环链表
循环链表的操作和线性链表基本一致,差别仅仅在算法中的循环条件,p或p->next 是否为空
下面是代码:
#include<iostream>#include<stdlib.h>#include<algorithm>#define initSize 100 using namespace std;typedef int dataType;class node {friend class nodeList;private:dataType data; node* link; };class nodeList {private:node* first; public:nodeList() {first = new node();first->link = first; //这里的设置和单向链表不同 头表节点指向了自己}void add(dataType num); void insertTail(dataType num); void mediumInsert(dataType num, int pos);void Delete(dataType num); void show();};//显示函数void nodeList::show() {node* p = new node();p = first->link; //这里的设置和单向链表不同 遍历的第一个节点是头表节点的下一个 while (p != first) { //循环的终止条件变了 只要不指向下一个 则继续遍历dataType temp = p->data;cout << temp << " ";p = p->link;}cout << endl;}//插入函数 从头插入void nodeList::add(dataType num) {node* newNode = new node();newNode->data = num;newNode->link = first->link;first->link = newNode; //这里是个坑 first本身是个空节点 专门用来做表头}//插入尾部void nodeList::insertTail(dataType num) {node* newNode = new node();newNode->data = num;node* p = new node(); p = first->link; //first的下一个为第一个非空节点while (p->link != first) { //不是头节点的话p = p->link;}newNode->link = p->link;p->link = newNode;}//中间部分插入void nodeList::mediumInsert(dataType num, int pos) {node* newNode = new node();newNode->data = num;node* p = new node(); p = first->link;int k = 0; while (p->link != first && k < pos - 1) {p = p->link;k++;}newNode->link = p->link;p->link = newNode;}void nodeList::Delete(dataType num) {node* p = new node();node* q = new node();p = first->link;q = NULL;if (p->data == num) {first->link = p->link; //坑delete p;return;}else {while (p != first) {q = p->link;if (q->data == num) {p->link = q->link; delete q;break;}p = p->link;}}}void main() {nodeList MyList;MyList.add(30);MyList.add(15);MyList.add(20);MyList.show();MyList.insertTail(999);MyList.show();MyList.mediumInsert(30,5); MyList.show();MyList.Delete(15);MyList.show();system("PAUSE");return;}
阅读全文
0 0
- 数据结构 循环链表
- 数据结构-循环链表
- 数据结构----循环链表
- 数据结构--循环链表
- 【数据结构】循环链表
- 数据结构-循环链表
- 数据结构-循环链表
- 数据结构--循环链表
- 数据结构-循环链表
- 数据结构 循环链表
- 数据结构-循环链表
- 数据结构--循环链表
- 数据结构实现循环链表
- 数据结构-----双向循环链表
- 数据结构 -- 双向循环链表
- 数据结构--循环双向链表
- 数据结构之循环链表
- 数据结构之循环链表
- 机器学习相似度度量
- 【YDKJS笔记】一、入门与进阶
- 线程与进程的概念和区别
- 【模板】倍增法求lca
- Git仓库SSH Key 的配置
- 数据结构 循环链表
- POJ 3600 Subimage Recognition(dfs)
- leetcode 80. Remove Duplicates from Sorted Array II
- TensorFlow在MNIST数据集上实现神经网络
- Java编程规范
- jdk源码二 Object对象你懂了吗?
- 二叉树寻找最近公共祖先
- 幂等性理解和解决方案
- Java transient关键字使用小记