栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

使用C++实现顺序链表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用C++实现顺序链表

这是创建的LIst.h头文件

#ifndef LIST_H
#define LIST_H
class List
{
public:
List(int size);
~List();
void DestroyList();
void ClearList();
bool ListEmpty();
int ListLength();
bool GetElem(int i, int *e);
int LocateElem(int *e);
bool ListInsert(int i, int *e);
bool ListDelete(int i, int *e);
bool PriorElem(int *currentElem, int *preElem);
bool NextElem(int *currentElem, int *NextElem);
void ListTraverse();
private:
int *m_pList;
int m_iSize;
int m_iLength;
};
#endif

创建的list.cpp文件

#include"LIst.h"
#include
using namespace std;
List::List(int size)
{
m_iSize = size;
m_pList = new int[m_iSize]; //申请堆内存 
m_iLength = 0;
}
List::~List()
{
delete []m_pList;
m_pList = 0; //不为NULL就等于0;
}
void List::DestroyList()
{
m_iLength=0;
}
void List::ClearList()
{
m_iLength = 0;
}
bool List::ListEmpty()
{
if (m_iLength == 0)
{
return true;
}
else
return false;
}
int List::ListLength()
{
return m_iLength;
}
bool List::GetElem(int i, int *e)
{
if (i<0 || i>=m_iLength)
{
return false;
}
else
{
*e = m_pList[i];
}
}
int List::LocateElem(int *e)
{
for (int i = 0; i < m_iLength; i++)
{
if (*e == m_pList[i])
return i;
}
return -1;
}
bool List::ListInsert(int i, int *e)
{
if (i<0 || i>m_iLength)
{
return false;
}
else 
{
for (int k = m_iLength - 1; k >= i; k--)
{
m_pList[k + 1] = m_pList[k];
}
m_pList[i] = *e;
m_iLength++;
}
}
bool List::ListDelete(int i, int *e)
{
if (i<0 || i>m_iLength)
{
return false;
}
else
{
for (int k = i; k < m_iLength - 1; k++)
{
m_pList[k ]=m_pList[k + 1]; //直接覆盖了前面的元素 
}
m_iLength--;
}
}
bool List::PriorElem(int *currentElem, int *preElem)
{
   //错误
int temp = LocateElem(currentElem);
if (temp == -1)
{
return false;
}
else
{
if (temp == 0)
{
return false;
}
else
{
*preElem = m_pList[temp - 1];
return true;
}
}
}
bool List::NextElem(int *currentElem, int *NextElem)
{
int temp = LocateElem(currentElem);
if (temp == -1)
{
return false;
}
else
{
if (temp == m_iLength)
{
return false;
}
else
{
*NextElem= m_pList[temp + 1];
return true;
}
}
}
void List::ListTraverse()
{
for (int i = 0; i < m_iLength; i++)
{
cout << m_pList[i]<

这是测试函数ListMain.cpp

#include
#include"LIst.h"

using namespace std;
int main()
{//3 5 7 2 9 1 8
int temp = 0;
int e1 = 3;
int e2 = 5;
int e3 = 7;
int e4 = 2;
int e5 = 9;
int e6 = 1;
int e7 = 8;
List *list = new List(10);
//cout << list->ListLength() << endl;
list->ListInsert(0, &e1);
//cout << list->ListLength() << endl;
list->ListInsert(1, &e2);
//cout << list->ListLength() << endl;
list->ListInsert(2, &e3);
list->ListInsert(3, &e4);
list->ListInsert(4, &e5);
list->ListInsert(5, &e6);
list->ListInsert(6, &e7);
list->ListTraverse();

list->PriorElem(&e4,&temp);
cout << "temp=" << temp << endl;
list->NextElem(&e4, &temp);
cout << "temp=" << temp << endl;

//list->ListTraverse();
//cout << m_iLength << endl; //错误
delete list;
system("pause");
return 0;
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对考高分网的支持。如果你想了解更多相关内容请查看下面相关链接

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/62712.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号