`
synchronized_lala
  • 浏览: 40954 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

线性链表简单回顾(面向对象)

阅读更多

挺久没写了,学的也很浅,如果写错了希望帮忙指正,谢谢!

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;
}
 

 

1
2
分享到:
评论

相关推荐

    2000张思维导图

    1. **C++**:C++是一种面向对象的编程语言,由Bjarne Stroustrup于1983年创建。它在系统编程、游戏开发、服务器端应用等领域广泛使用。C++强调性能、可移植性和灵活性,支持过程化、面向对象和泛型编程。 2. **Java...

    传智播客扫地僧视频讲义源码

    03_用面向过程和面向对象方法求解圆形面积_类和对象的关系思考_传智扫地僧 04_类中不写成员函数易犯错误模型 05-易犯错误模型-为什么需要成员函数(补充资料)-传智扫地僧 06_课堂答疑类中写成员函数_调用的时才会执行...

    计算机毕业设计 c++课程设计宾馆客房管理系统 C&C++源代码+开发文档说明 软件/插件 范文 模板 程序源码

    1. 面向对象设计:C++的强项在于其支持面向对象编程,通过类和对象的设计,可以将现实世界的问题抽象为程序模型。在这个系统中,可能会有`客房`类,包含房间号、类型、价格等属性,以及预订、入住、退房等方法;还有...

    算法笔记上机训练实战指南-胡凡

    2. **面向对象编程**:C++是面向对象的语言,书中可能深入讲解类、对象、继承、多态和封装等概念,以及如何设计和实现面向对象的程序。 3. **STL(Standard Template Library)**:C++的STL包含容器(如vector、...

    数据结构算法与应用-C__语言描述2.rar

    通过C++,读者不仅能学习到抽象数据类型的概念,还能理解面向对象的设计原则,这对提升编程能力和软件工程素养至关重要。 书中的PDF文件可能包含每一章的详细讲解、实例代码、习题解析等内容。007.PDF可能是关于树...

    数据结构C#版

    - **面向对象的实践:** 通过C#语言实现数据结构,可以深入理解面向对象的设计原则和技术。 - **平台兼容性:** .NET Framework提供了广泛的API支持,使得基于C#的数据结构能够在多种平台上运行。 - **技术更新:** ...

    《数据结构算法》电子教案

    3. C++编程基础:回顾C++的基本语法和面向对象特性,以便于理解和编写数据结构和算法的代码。 4. STL的使用:详细介绍如何利用STL容器和算法库提高代码的效率和可读性。 5. 实例分析:通过具体的实例,展示如何应用...

    accp 2012 s2机试

    3. **面向对象编程**:作为高级阶段,S2可能会测试学员对面向对象编程的理解,包括类的定义、对象的创建、封装、继承、多态等概念。例如,题目可能要求设计一个简单的类结构,并实现特定的方法。 4. **数据结构**:...

    计算机程序设计基础,期末复习资料,个人自制.zip

    综上所述,这份“期末复习资料”将涵盖计算机程序设计的基础知识、编程语言的使用、数据结构与算法的理解、面向对象编程的概念、软件工程原则等多个方面。通过系统的复习和实践,相信学生能够扎实掌握计算机程序设计...

    2014计算机二级java考试大纲

    数据结构和算法部分,大纲通常会要求考生理解并能运用简单的数据结构,如数组、链表、栈、队列,以及一些基础算法,如排序(冒泡排序、选择排序、快速排序等)、查找(线性查找、二分查找)等。这些知识在实际编程...

    第一次考试编程答案

    3. **面向对象编程**:在许多高级语言中,如Java和C#,面向对象编程(OOP)是核心概念。理解类、对象、继承、封装和多态性等概念,能帮助构建可维护、可扩展的代码。 4. **错误处理和调试**:学习如何处理运行时...

    JAVA经典算法90题【含源码】

    接下来,"最新JAVA编程题全集_50题及答案.doc"可能涵盖了更多实际编程场景中的问题,比如字符串处理、文件操作、数据结构(栈、队列、链表、树等)的应用,以及面向对象设计原则的实践。这些题目可能涉及如何使用...

    数据结构课件(讲解详细)

    为了辅助学习,推荐了多本教材和习题集,如严蔚敏的《数据结构》(C语言版)、李春保的《数据结构习题与解析》以及殷人昆的《数据结构辅导与提高》等,涵盖C++和面向对象的方法。 数据结构课程处于数学、计算机硬件...

    C语言的C++数据结构进阶课程

    2. **C++特性**:C++是C语言的扩展,引入了面向对象编程的概念,如类、对象、封装、继承和多态。课程将详细讲解这些特性,并通过实例展示它们在实际编程中的应用。 3. **数据结构**:这是课程的重点,数据结构是...

    第绪论Java学习教案.pptx

    通过设计简单的算法,回顾Java的基本语法和面向对象的概念,可以帮助巩固理论知识并提升编程技能。\n\n学习Java不仅需要理解基础概念,还要能够应用这些知识解决实际问题。掌握数据结构和算法,是成为一名优秀Java...

    蓝桥杯省赛:2016年B组C++(第七届)题目及答案

    首先,我们要了解C++的基础知识,它是面向对象的编程语言,具有高效性、灵活性和丰富的库支持。参赛者需要熟悉C++的基本语法,包括变量、常量、运算符、流程控制语句(如if-else、switch-case、for、while等)。此外...

    Java期末复习资料

    - **面向对象**:理解类和对象的概念,知道如何进行封装、继承和多态。 - **集合框架**:熟悉ArrayList、LinkedList、HashMap等集合类的使用,理解它们的特点和应用场景。 - **异常处理**:了解何时使用try-catch-...

Global site tag (gtag.js) - Google Analytics