用C++ 实现链表:
首先功能分析: 构造,清理,增删改查,求大小 判断空 ,取头取尾
#include <iostream> using namespace std; typedef int T; //链表类 class LinkedList { struct Node { T data; Node* next; Node(const T& t):data(t),next(NULL) { } }; public: //构造 析构 清空 LinkedList():head(NULL) { } ~LinedList() { clear(); } void clear() { } //增(insertBack insertFront)删改查(find) void insertFront(const T& t) { } void insertBack(const T& t) { } void erase(const T& t) { } void update(const T& t,const T& target) { } unsigned int find(const T& t) { unsigned int position=0; return position; } //判断empty 求size 遍历(travel) bool empty() { } unsigned int size() { int size=0; return size; } void travel() { } //取头 取尾 T getHead() { } T getTail() { } //去指定位置取指针 辅助作用 Node* getPointer(int position) { return NULL; } private: //头指针 最重要的部分 Node* head; }; int main() { }
功能添加:
#include <iostream> using namespace std; typedef int T; //链表类 class LinkedList { struct Node { T data; Node* next; //初始化data next 阻止垃圾数据 Node(const T& t=T()):data(t),next(NULL) { } }; public: //构造 析构 清空 LinkedList():head(NULL) { } ~LinkedList() { clear(); } void clear() { Node *p=head; while (p!=NULL) { Node *q = p->next; delete p;//释放p所在空间 p=q; } } //判断empty 求size 遍历(travel) bool empty() { //判断头指针是否为空 为空表示链表不存在 return head==NULL ? true : false; } unsigned int size() { unsigned int size=0; Node* p =head; while (p!=NULL) { size++; pp=p->next; } return size; } void travel() { //利用while循环一次次的输出来,直到指针为NULL结束 Node* p = head; while (p!=NULL) { cout<<p->data<<endl; pp=p->next; } } //增(insertAfter insertFront)删改查(find) void insertFront(const T& t) { Node* p = new Node(t); p->next=head; //讲头指针所指向的地址给p的next head = p; //让*p作为头 } void insertAfter(const T& t) { Node *p = new Node(t); Node *tail = getPointer(size()-1); tail->next = p; } void erase(const T& t) { unsigned int position = find(t); Node* cur = getPointer(position); if (position!=0) { Node* pre = getPointer(find(t)-1); pre->next = cur->next; }else{ head = cur->next; } delete cur; } void update(const T& t,const T& target) { Node *p=getPointer(find(target)); p->data=t; } unsigned int find(const T& t) { unsigned int position=0; Node* p = head; while(p!=NULL) { if (p->data==t) { return position; } pp=p->next; position++; } return position; } //取头 取尾 T getHead() { return head->data; } T getTail() { Node *p=getPointer(this->size()-1); return p->data; } //去指定位置取指针 辅助作用 Node* getPointer(int position) { Node* p =head; for(int i = 0;i<position;i++) { pp=p->next; } return p; } private: //头指针 最重要的部分 Node* head; }; int main() { }
相关推荐
在《严蔚敏-数据结构》一书中,作者深入浅出地讲解了链表的概念及其C++实现。这里我们将详细探讨链表的原理、C++中的链表实现以及相关知识点。 链表与数组不同,它不连续存储元素,而是通过节点间的指针连接形成...
数据结构实验线性表当中的链表结构实现,带有详细注释,小白也能看得懂
C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 ...
数据结构-基本算法-静态链表(学生时代源码,调试可运行)
在C++中实现队列,我们可以使用标准模板库(STL)中的`queue`容器,或者自定义数据结构来模拟队列的行为。本节将深入探讨C++中队列的实现与应用。 一、C++标准库中的`queue`容器 C++ STL中的`<queue>`头文件提供了...
本文将深入探讨C++中的三种关键链表数据结构:单链表、循环链表和双向链表,以及如何通过面向对象编程来实现它们。 1. **单链表**: 单链表是最基础的链式数据结构,每个节点包含一个数据元素和一个指向下一个节点...
"c++算法集-排序-链表-图-队列-二叉树实现"这个压缩包包含了C++语言实现的一些核心数据结构和算法,这些都是计算机科学的基础。 首先,我们来详细探讨排序算法。排序是计算机科学中最基本的操作之一,它涉及将一组...
在学习过程中,读者应结合C++数据结构 - 清华书籍中的实例代码进行练习,这将有助于深化理解,提升编程技巧。同时,两本书中的习题和案例是检验和巩固学习成果的重要手段,通过反复的实践和思考,可以逐步建立起对...
严蔚敏教授的《数据结构》不仅涵盖了以上的基本概念,还深入讨论了这些数据结构在C++中的实现,以及如何通过算法优化来提升性能。学习这门课程,不仅可以掌握数据结构的理论知识,还能提升编程能力,为后续的软件...
介绍了数据结构中链表的构建,遍历,求表长,插入以及删除等基本操作,并用c++语言对其进行了功能实现。
总结来说,"C++多项式--循环链表"的主题涵盖了数据结构(循环链表)、运算符重载以及在VS2005环境下编写C++代码的技巧。通过循环链表来表示多项式,可以方便地进行加减乘等运算,同时利用运算符重载使代码更具表达性...
一、基础数据结构-1.链表-2.静态链表
添加、删除、拷贝、清空、树深度计算、父节点、兄弟节点获取、先中后序递归及非遍历、按层次遍历、中序迭代器(非递归算法)、节点查找、先序和中序序列重建二叉树、数组和二叉链表存储结构相互转换。使用模板偏特化...
在C++中,链表是一种常见的数据结构,它不同于数组,不需要连续的内存空间来存储元素。本项目专注于C++实现的单链表,提供了一个完整的可运行示例,包括`main.cpp`主程序,以及`linklist.h`和`node.h`两个头文件,...
根据提供的文件信息,这里主要关注的是“C++数据结构与算法(第4版)”这一主题,虽然实际内容并未给出具体章节或知识点,但我们可以基于标题、描述以及部分已知内容来推测书中可能涵盖的关键知识点。 ### C++数据...
链表是一种基础且重要的数据结构,它在计算机科学中扮演着关键角色,特别是在处理动态数据集合时。在数据结构的世界里,链表不同于数组,它不是连续存储元素,而是通过节点之间的指针链接来实现数据的组织。接下来,...
大一学期作业C语言-数据结构开发非常简单的图书管理系统,可以帮助学习单链表操作。 分为: C版本---DevC++打开 C++版本-----VS打开 主页面如下: 欢迎使用图书管理系统(管理员:admin 密码:password) 1.管理...
总结来说,"数据结构 线性表和链表 c++实现"这一主题涵盖了基础数据结构的理论和实践,包括顺序表和链表的概念、优缺点以及在C++中的面向对象实现。通过理解这些内容,开发者可以更好地设计和优化算法,解决实际问题...
C++模板类实现的动态数组、双向循环链表、队列、栈等数据结构,以及基于迭代器的静态查找和排序算法,包括顺序查找、折半查找、简单选择排序(用于单向迭代器)、快速排序(双向迭代器)、堆排序(随机迭代器)。...
在C++中实现链表可以帮助我们更好地理解和掌握这种数据结构。链表不同于数组,它不连续存储元素,而是通过节点之间的指针链接来组织数据。每个节点包含两部分:数据元素和指向下一个节点的指针。 ### 1. 链表的基本...