时间:2021-05-19
这是创建的LIst.h头文件
#ifndef LIST_H#define LIST_Hclass 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<iostream>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;}elsereturn 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){/*for (int i = 0; i < m_iLength; i++){if (*currentElem == m_pList[i])*preElem = m_pList[i - 1];}return true;*/ //错误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]<<endl;}}这是测试函数ListMain.cpp
#include<iostream>#include"LIst.h"/*线性表--顺序表 以这个为例3 5 7 2 9 1 8bool InitList(); //创建线性表void DestroyList(); //销毁线性表void ClearList(); //清空线性表bool ListEmpty(); //判断线性表是否为空int ListLength(); //获取线性表的长度bool GetElem(int i,Elem *e);//获取指定的元素int LocateElem(Elem *e);//寻找第一个满足e的数据元素的位序bool PriorElem(Elem *currentElem,Elem *preElem); //获取指定元素的前驱bool NextElem(Elem *currentElem,Elem *NextElem);//获取指定元素的后继bool ListInsert(int i,Elem *e); //在第i个插入元素bool ListDelete(int i,Elem *e); //删掉第i个位置的元素void ListTraverse(); //遍历线性表*/using namespace std;int main(){//3 5 7 2 9 1 8int 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;}总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
双向链表C++的实现本文是通过C++的知识实现数据结构中的双向链表,这里不多说了,代码注释很清楚,实现代码://doubleLinkListimplementw
C++数据结构之链表的创建前言1.链表在C/C++里使用非常频繁,因为它非常使用,可作为天然的可变数组.push到末尾时对前面的链表项不影响.反观C数组和std
C语言实现单链表实现方法链表和我们之前实现过的顺序表一样,都是简单的数据结构,链表分为单向链表、双向链表、循环链表。而单向链表又分为两种实现方法,一种为带头节点
本文主要给大家介绍了关于C++实现顺序表和单链表的相关内容,分享出来供大家参考学习,话不多说,来一起看看详细的介绍:一、顺序表示例代码:#include#inc
本文通过一个实例展示了C++实现链表倒序的方法,对于C++数据结构的学习有很好的参考借鉴价值。具体方法如下:首先,C++链表倒序的难点在于如何一个个地修改。虽然