c语言中 链表的建立 删除 输出 插入分别用那些函数[C++] 一般线性链表类的C++实现
以下的C++类LinkList实现了线性链表的一般操作 。可以直接在其他的程序中直接建立它的对象,其中线性表中的数据在此为整型,具体应用的时候可以适当的修改,并可以在此基础上继续封装特定的功能 。
头文件:LinkList.h
typedef struct LNode {
int data;
struct LNode *next;
}LNode, *pLinkList;
class LinkList {
private:
pLinkList m_pList;
int m_listLength;
public:
LinkList();
~LinkList();
bool InitList ();
bool DestroyList ();
bool ClearList();
bool IsEmpty ();
int GetLength ();
bool GetNode(int position, LNode** node);
int LocateElem(int elem);
bool SetNodeData(int position, int newData);
bool GetNodeData(int position, int data);
bool InsertNode(int beforeWhich, int data);
bool DeleteNode(int position);
};
Cpp文件:LinkList.cpp
#include iostream.h
#include "LinkList.h"
LinkList::LinkList() {
m_pList = NULL;
m_listLength = 0;
InitList();
}
LinkList::~LinkList() {
if (!DestroyList()) {
DestroyList();
}
}
//初始化,分配一个头节点 。
bool LinkList::InitList() {
if (!(m_pList = new LNode)) {
return false;
}
m_pList-next = NULL;
return true;
}
//销毁链表 。
bool LinkList::DestroyList() {
if (!ClearList()) {
return false;
}
delete m_pList;
return true;
}
//判断链表是否为空 。若为空,返回true , 否则返回false 。
bool LinkList::IsEmpty() {
if (m_pList-next == NULL) {
return true;
}
return false;
}
//返回链表的中当前节点数 。
int LinkList::GetLength() {
return m_listLength;
}
//将链表清空,释放当前所有节点 。
bool LinkList::ClearList() {
if (m_pList == NULL) {
return false;
}
LNode *pTemp = NULL;
while (m_pList-next != NULL) {
pTemp = m_pList-next;
m_pList-next = pTemp-next;
delete pTemp;
}
m_listLength = 0;
return true;
}
//将position指定的节点内的数据设置为newData 。
//第一个有效节点的position为1 。
bool LinkList::SetNodeData(int position, int newData) {
LNode *pTemp = NULL;
if (!(GetNode(position, pTemp))) {
return false;
}
pTemp-data = https://www.04ip.com/post/newData;
return true;
}
//得到指定位置节点的数据 。
//节点索引从1到listLength 。
bool LinkList::GetNodeData(int position, int data) {
LNode *pTemp = NULL;
if (!(GetNode(position, pTemp))) {
return false;
}
data = https://www.04ip.com/post/pTemp-data;
return true;
}
//在链表中插入一个节点 。
//插入的位置由beforeWhich指定,新节点插入在beforeWhich之前 。
//beforeWhich的取值在1到ListLength+1之间 。
bool LinkList::InsertNode(int beforeWhich, int data) {
LNode *pTemp = NULL;
if (beforeWhich1 || beforeWhich(m_listLength + 1)) {
return false;
}
if (!(GetNode(beforeWhich - 1, pTemp))) {
return false;
}
LNode *newNode = new LNode;
newNode-data = https://www.04ip.com/post/data;
newNode-next = pTemp-next;
pTemp-next = newNode;
m_listLength++;
return true;
}
//删除一个指定的节点 。
//节点位置由position指定 。
//positon的值从1到listLength 。
//若链表为空或指定的节点不存在则返回false 。
bool LinkList::DeleteNode(int position) {
推荐阅读
- 冒险岛4的游戏,冒险岛4游戏攻略
- 如何形成餐饮店线上引流,如何经营线上餐饮
- jpg转pdf转换器迅捷,pdf转jpg 迅捷
- excel甘特图怎么做,excel甘特图怎么做进度计划
- linux常用命令的使用 linux常用命令使用范例
- 显卡驱动电源坏了怎么办,显卡驱动坏了怎么修
- 怎样联系抖音直播助力平台,怎样联系抖音直播助力平台客服
- 安装linux命令行参数 linux 命令行安装
- 安卓10桌面怎样退出,安卓系统程序怎么退出