(C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
来源:互联网 发布:tensorflow lr 编辑:程序博客网 时间:2024/05/04 18:35
链表(二)单向循环链表的实现,下面实现代码:
#include <iostream>#include <stdlib.h>using namespace std;//结点类class Node {public:int data;Node *pNext;};//单向循环链表类class CircularLinkList {public:CircularLinkList() {head = new Node;head->data = 0;head->pNext = head;}~CircularLinkList() {delete head;}void CreateLinkList(int n);//创建单向循环链表void InsertNode(int position, int d);//在指定位置插入结点void TraverseLinkList();//遍历链表bool IsEmpty();//判断链表是否为空int GetLength();//得到链表的长度void DeleteNode(int position);//删除指定位置结点void DeleteLinkList();//删除链表private:Node *head;};void CircularLinkList::CreateLinkList(int n) {if (n < 0) {cout << "输入结点个数错误!" << endl;exit(EXIT_FAILURE);}else {Node *pnew, *ptemp = head;int i = n;while (n-- > 0) {cout << "输入第" << i - n << "个结点值:";pnew = new Node;cin >> pnew->data;pnew->pNext = head;ptemp->pNext = pnew;ptemp = pnew;}}}void CircularLinkList::InsertNode(int position, int d) {if (position < 0 || position > GetLength() + 1) {cout << "输入位置错误!" << endl;exit(EXIT_FAILURE);}else {Node *pnew, *ptemp = head;pnew = new Node;pnew->data = d;while (position-- > 1)ptemp = ptemp->pNext;pnew->pNext = ptemp->pNext;ptemp->pNext = pnew;}}void CircularLinkList::TraverseLinkList() {Node *ptemp = head->pNext;while (ptemp != head) {cout << ptemp->data << " ";ptemp = ptemp->pNext;}cout << endl;}bool CircularLinkList::IsEmpty() {if (head->pNext == head)return true;elsereturn false;}int CircularLinkList::GetLength() {int n = 0;Node *ptemp = head->pNext;while (ptemp != head) {n++;ptemp = ptemp->pNext;}return n;}void CircularLinkList::DeleteNode(int position) {if (position < 0 || position > GetLength()) {cout << "输入位置错误!" << endl;exit(EXIT_FAILURE);}else {Node *ptemp = head, *pdelete;while (position-- > 1)ptemp = ptemp->pNext;pdelete = ptemp->pNext;ptemp->pNext = pdelete->pNext;delete pdelete;pdelete = NULL;}}void CircularLinkList::DeleteLinkList() {Node *pdelete = head->pNext, *ptemp;while (pdelete != head) {ptemp = pdelete->pNext;head->pNext = ptemp;delete pdelete;pdelete = ptemp;}}//测试函数int main() {CircularLinkList cl;int position = 0, value = 0, n = 0;bool flag = false;cout << "请输入需要创建单向循环链表的结点个数:";cin >> n;cl.CreateLinkList(n);cout << "打印链表值如下:";cl.TraverseLinkList();cout << "请输入插入结点的位置和值:";cin >> position >> value;cl.InsertNode(position, value);cout << "打印链表值如下:";cl.TraverseLinkList();cout << "请输入要删除结点的位置:";cin >> position;cl.DeleteNode(position);cout << "打印链表值如下:";cl.TraverseLinkList();cl.DeleteLinkList();flag = cl.IsEmpty();if (flag)cout << "删除链表成功!" << endl;elsecout << "删除链表失败!" << endl;return 0;}
0 0
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
- (C++版)链表(三)——实现双向链表的创建、插入、删除等简单操作
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
- (C++版)链表(三)——实现双向链表的创建、插入、删除等简单操作
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- 聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Index)举例说明
- 第十一周上机实践项目——点类派生直线类
- Linux内核学习
- 构造器内部的多态方法的行为
- Coursera Scala 2-1:高阶函数
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- 大物理地址扩展 (LPAE)
- myeclipse优化过程
- 【学习笔记】mysql索引原理之聚簇索引
- Coursera Scala 2-2:Curry函数
- list_entry()详解
- ios 私有方法打印出任意视图的视图层次结构
- Java当中的基本概念和环境搭建
- SpringNote01.基于SpringMVC-Hibernate的Blog系统