功能包含数据的插入,删除,定位,查找前驱元素,查找后驱元素,显示功能;主要包含两个文件;.h文件对类1定义和对模板类的功能实现 .cpp主要用于功能测试;(可以忽略下我的注释哈,都是些碎碎念555~)
#include
#include
using namespace std;
#ifndef INCLUDE_LIST_H_
#define INCLUDE_LIST_H_
template
//template
class List{//类声明
private:
int *m_list;//内存
int m_size; //内存大小
int m_length;//数组长度
public: List() ;//构造函数
~List() ;//析构函数
void clearlist() ;//初始化长度
bool listempty() ;//判断是否为空
int listlength() ;//获取数组长度
bool get(int i,elem*e) ;//查找指定下标函数,位置和数据的双重判断
int locate(elem*e) ;//查找指定函数
bool piror(elem*current,elem*preelem) ;//查找前驱元素
bool next(elem*current,elem*nextelem) ;//查找后驱元素 这里就tm离谱
void alllist() ;//遍历输出
bool insert(int i,elem*e) ;//指定插入
bool del(int i,elem*e) ;//指定删除 为什么要用指针,好奇怪
};
template
List
{
m_size=size;//获得数据内存大小
m_list=new int[m_size] ; //开辟空间 //有点意思这里
m_length=0;
}
template
List
{
delete[]m_list;//释放数据
m_list=NULL; //释放了咋还弄成空的嘞
}
template
void List
{
m_length=0;//内存为0
}
template
bool List
{
if(m_length==0)
return true;
else
return false; // 为什么从长度开始判断
}
template
int List
{
return m_length;
}
template
bool List
{
if(i<0||i>m_size||i==m_size)
{
cout<<"输入不合法" <
}
*e=m_list[i];
return true; //原谅我这里也有点疑惑
}
template
int List
{
//定位
for(int i=0;i
if(m_list[i]==*e)//内存数据判断
{
return i;
}
}
return -1;
}
template
bool List
{
int temp=locate(current);//查找目前数值的位置
if(temp==-1)
{
return false;
}
else if(temp==0)
{
cout<<"首元素没有前驱元素" <
}
else
{
*preelem=m_list[temp-1];
return true;
}
}
template
bool List
{
int temp=locate(current);
if(temp==-1)
{
return false;
}
else if(temp==m_length-1)
{
cout<<"该元素没有后驱元素" <
}
else
{
*nextelem=m_list[temp+1];
return true;
}
}
template
void List
{
for(int i=0;i
cout<
}
template
bool List
{
if(i<0||i>m_length)//合法判断
{
return false;
}
for(int k=m_length-1;k>=i;k--)
{
m_list[k+1]=m_list[k];//依法次后移动
}
m_list[i]=*e;
m_length++;
return true;
}
//删除元素
template
bool List
{
if (i<0 || i>m_length)
return false;
*e = m_list[i];
for (int k = i + 1; k < m_length; k++)
{
m_list[k - 1] = m_list[k];
}
m_length--;
return true;}
#endif /* INCLUDE_LIST_H_ */ //这是个什么注释表达方法
main.cpp文件
#include
#include "list.h"
#include
using namespace std;
typedef double elem;//重命名
int main()
{
elem temp;
elem a[100];
List
cout<<"数值导入前顺序表长度"<
cin>>n;
cout<<"请输入各个元素数值"<
cin>>a[i];
}
for(int i=0;i
list1.insert(i,&a[i]);//插入元素
}
cout<<"数值导入后顺序表长度"<
cin>>d;
switch(d)
{
case 1:
cout<<"请输入查找前驱元素的序号";
int b;
cin>>b;
list1.piror(&a[b-1],&temp);
cout<<"查找元素的前驱元素为"<
case 2:
cout<<"请输入查找后驱元素的序号";
int h;
cin>>h;
list1.next(&a[h-1],&temp) ;
cout<<"查找元素的后驱元素为"<
case 3:
int u;
cout<<"请输入要删除的元素位置"<
list1.del(d-1,&temp);
cout<<"被删除的元素"<
break;
case 4:
cout<<"请输入插入元素的位置" <
cin>>o;
cout<<"请输入插入的元素"<
cin>>m;
temp=m;
list1.insert(o-1,&temp) ;
cout<<"插入后的顺序表为"<
break;
case 5:
cout<<"请输入查找元素的数值"<
cin>>num;
temp=num;
cout<<"查找元素的位置为"<
}
return 0;
}
先发吧,后续的知识点我今天晚上回去总结下顺序表实现的思路)