使用C++实现顺序链表
这是创建的LIst.h头文件
#ifndefLIST_H #defineLIST_H classList { public: List(intsize); ~List(); voidDestroyList(); voidClearList(); boolListEmpty(); intListLength(); boolGetElem(inti,int*e); intLocateElem(int*e); boolListInsert(inti,int*e); boolListDelete(inti,int*e); boolPriorElem(int*currentElem,int*preElem); boolNextElem(int*currentElem,int*NextElem); voidListTraverse(); private: int*m_pList; intm_iSize; intm_iLength; }; #endif
创建的list.cpp文件
#include"LIst.h" #includeusingnamespacestd; List::List(intsize) { m_iSize=size; m_pList=newint[m_iSize];//申请堆内存 m_iLength=0; } List::~List() { delete[]m_pList; m_pList=0;//不为NULL就等于0; } voidList::DestroyList() { m_iLength=0; } voidList::ClearList() { m_iLength=0; } boolList::ListEmpty() { if(m_iLength==0) { returntrue; } else returnfalse; } intList::ListLength() { returnm_iLength; } boolList::GetElem(inti,int*e) { if(i<0||i>=m_iLength) { returnfalse; } else { *e=m_pList[i]; } } intList::LocateElem(int*e) { for(inti=0;i m_iLength) { returnfalse; } else { for(intk=m_iLength-1;k>=i;k--) { m_pList[k+1]=m_pList[k]; } m_pList[i]=*e; m_iLength++; } } boolList::ListDelete(inti,int*e) { if(i<0||i>m_iLength) { returnfalse; } else { for(intk=i;k 这是测试函数ListMain.cpp
#include#include"LIst.h" /* 线性表--顺序表以这个为例 3572918 boolInitList();//创建线性表 voidDestroyList();//销毁线性表 voidClearList();//清空线性表 boolListEmpty();//判断线性表是否为空 intListLength();//获取线性表的长度 boolGetElem(inti,Elem*e);//获取指定的元素 intLocateElem(Elem*e);//寻找第一个满足e的数据元素的位序 boolPriorElem(Elem*currentElem,Elem*preElem);//获取指定元素的前驱 boolNextElem(Elem*currentElem,Elem*NextElem);//获取指定元素的后继 boolListInsert(inti,Elem*e);//在第i个插入元素 boolListDelete(inti,Elem*e);//删掉第i个位置的元素 voidListTraverse();//遍历线性表 */ usingnamespacestd; intmain() {//3572918 inttemp=0; inte1=3; inte2=5; inte3=7; inte4=2; inte5=9; inte6=1; inte7=8; List*list=newList(10); //cout< ListLength()< ListInsert(0,&e1); //cout< ListLength()< ListInsert(1,&e2); //cout< ListLength()< ListInsert(2,&e3); list->ListInsert(3,&e4); list->ListInsert(4,&e5); list->ListInsert(5,&e6); list->ListInsert(6,&e7); list->ListTraverse(); /*list->GetElem(2,&temp); cout<<"temp="< LocateElem(&temp)< PriorElem(&e4,&temp); cout<<"temp="< NextElem(&e4,&temp); cout<<"temp="< ListDelete(0,&temp); if(!list->ListEmpty()) { cout<<"notempty!"< ClearList(); if(!list->ListEmpty()) { cout<<"notempty!"< ListTraverse(); //cout< 总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接