挺久没写了,学的也很浅,如果写错了希望帮忙指正,谢谢!
Node.h
#include<iostream>
#ifndef NODE
#define NODE
using namespace std;
class Node
{
public:
int iValue;//default type is private
Node *next;
Node();
Node(int iVal):iValue(iVal),next(NULL){};
int iGetValue();
void vSetValue(int iValue);
//~Node();不能声明了不实现,会报错: 无法解析的外部符号 "public: __thiscall Node::~Node(void)" (??1Node@@QAE@XZ)……
};
#endif
Node.cpp
#include"Node.h"
int Node::iGetValue()
{
return this->iValue;
}
void Node::vSetValue(int iValue)
{
this->iValue = iValue;
}
Linklist.h
#include<iostream>
#include"Node.h"
#ifndef LINKLIST
#define LINKLIST
using namespace std;
class Linklist
{
Node *headNode;
Node *nextNode;
public:
Linklist();
void vAddNode(int iVal);
void vDeleteNode(int iVal);
void vShowNode();
~Linklist();
};
#endif
Linklist.cpp
#include"Linklist.h"
Linklist::Linklist()
{
Node *headNode = new Node(0);
this->headNode = headNode;
nextNode = headNode;
//delete head;
}
void Linklist::vAddNode(int iVal)
{
Node *newNode = new Node(iVal);
nextNode->next = newNode;
nextNode = newNode;
}
void Linklist::vDeleteNode(int iVal)
{
bool bIsVal;
Node *delNode;
Node *current = headNode;
bIsVal = false;
while(current->next != NULL)
{
if(current->next->iValue == iVal)
{
bIsVal = true;
delNode = current->next;
current->next = current->next->next;
delete delNode;
delNode = NULL;
break;
}
}
if(bIsVal)
{
cout << "删除成功" << endl;
}
else
{
cout << "不存在此值" << endl;
}
}
void Linklist::vShowNode()
{
Node *current = headNode;
while(current->next != NULL)
{
cout << current->next->iValue << " ";
current = current->next;
}
cout << endl;
}
Linklist::~Linklist()
{
Node *delNode;
while(headNode->next != NULL)
{
delNode = headNode;
headNode = headNode->next;
delete delNode;
delNode = NULL;
}
delete headNode; //创建时创建了一个
headNode = NULL;
nextNode = NULL;
}
Using.cpp
#include<iostream>
#include"Linklist.h"
using namespace std;
int main()
{
Linklist *link = new Linklist();
link->vAddNode(3);
link->vAddNode(5);
link->vDeleteNode(3);
link->vShowNode();
delete link;
link = NULL;
return 0;
}
分享到:
相关推荐
数据结构实现C++线性链表,实现增删改查基本方法
线性链表的简单操作,其中包括线性链表的创建与合并
8581 线性链表逆置
了解和掌握线性链表的逻辑结构,掌握线性链表的基本算法及相关的应用。
线性链表查询算法,即只要知道线性链表的头部和要查询的内容,就能进行查询!
包括线性链表的一些基本结构:初使,增加,是否是空,删除,清空等一些常用操作
关于线性链表的基本代码。静态函数啊结点啊什么的都有,看看就明白。
一个集合线性链表插入查找删除等功能的源代码,适合初学者自学与理解,这是我自己写的上交作业
这个程序是关于数据结构的单链表的课程设计,程序中有链表的创建,删除,遍历等基本操作。
本文档是对线性链表进行插入删除操作的代码,包含了两个不同的程序。用户可以对比参看。
数据结构实验三-有关线性链表的操作,建立线性链表,初始化线性链表,插入元素,删除元素,清空线性链表,摧毁线性链表
能实现线性链表的建立插入删除,移动等功能的完整c语言的代码
c++建立节点与节点链表,对结点进行插入,删除等操作
双链表学生管理系统(面向对象) 双向 链表 学生管理系统 面向对象 纯虚类
线性链表 单链表 可运行C++和C结合的代码 结合严蔚敏主编 的<数据结构 C语言版>
带表头结点(存放的是该线性链表的长度),结点存放的是整型数值; 实现以下操作 : 置空MakeEmpty() 求长度Length() 插入Insert(int x,int i): 将x插入到第i个结点(不含头结点)的之后 ...
线性链表.exe
链表 C语言 数据结构
C语言船舰线性链表,包含创建方法,比较适合新手学习。