- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从拾数据结构
从拾《数据结构》
线性表最简单的存储结构:所以我想首先从线性表说起。线性——很明显,肯定是满足某种关系的才能称作线性( ⊙ o ⊙ )!
不错,线性表有几个很明显的特征
(1):存在唯一的一个数据元素被称为表头
(2):除表头之外其余数据元素都拥有一个“前驱”
(3):存在唯一的一个数据元素被称为表尾
(4):出表尾之外其余数据元素都拥有一个“后继”
(5):数据元素存在一个有限的集合中
以上五个点,可以说是线性表最具有代表性的特征。
但是光有这些特征是不够的,要进一步了解线性表,还需要自己去实践中慢慢总结和积累。其实,线性表在计算机上可以理解为一块连续的内存。那神马是连续的内存呢!?
我们可以类比于连续的寝室。每栋寝室楼都有自己的区(也就是逻辑地址),而寝室楼里面又包含寝室单元,每个独立的寝室单元都有自己的门牌号(也就是偏移地址)。学过汇编语言的人都知道什么是逻辑地址和偏移地址,也就是计算机访问每个内存都是通过逻辑地址加偏移地址实现的。比如我要找你的寝室,我就要首先知道你是几栋,然后是你的寝室门牌号。通过这些信息当然我几可以轻而易举的找到你。不是吗!
呵呵,扯远了。。。其实,线性表就是这么一回事。无非就是一个巨大的容器,不过在ta容纳数据之前已经为数据分好了“家”,并且这些“家”的“门牌号”都是连续的。
好吧,如果还有耐心就看下面的代码吧!(个人风格趋向于C++,代码有点小长)。重点是删除和插入操作哦!
#includeiostream
#includestdlib.h
#define False 0
#define True 1
#define Error 0
#define Ok 1
typedef status;
using namespace std;
template class T
class Sqlist
{
private:
int Listsize;
int Length;
T *elem;//表头指针
public:
Sqlist(int size);
~Sqlist();
void Print1() const;//遍历输出所有元素的值
bool ListEmpty() const;//判断表是否为空
int ListLength() const;//返回线性表的表长
int LocateElem(T e) const;//返回e元素的位置
int GetElem(int x) const;//返回i位置元素的值
int Insert(int i,T e);//在i位置插入元素
int Delete(int c);//选择i位置删除元素
};
//函数的实现
template class T
SqlistT::Sqlist(int size)//构造函数
{
int j;
elem=new T[size];//申请新的空间
if(elem==NULL)
{
cout内存申请失败endl;
exit(1);
}
Length=0;
Listsize=size;
srand(size);
for(j=0;jsize;j++)
{
elem[j]=rand()%100;
Length++;
}
}
template class T
SqlistT::~Sqlist()
{
delete [] elem;
}
template class T
void SqlistT::Print1() const//输出函数
{
int k;
for(k=0;kLength;k++)
{
coutelem[k] ;
}
coutendl;
}
template class T
bool SqlistT::ListEmpty() const//判断是否为空
{
if(Length==0) return true;
else return false;
}
template class T
int SqlistT::ListLength() const//返回表长
{
cout表的长度为 : Lengthendl;
return Ok;
}
template class T
int SqlistT::LocateElem(T e) const//判断e元素的位置
{
int l;
for(l=0;lLength;l++)
{
if(elem[l]==e)
{
cout位置是: l+1endl;
return Error;
}
}
cout元素不存在 endl;
return Ok;
}
template class T
in
您可能关注的文档
- 刑法:第十九章7.doc
- 2013-2018年国内LTCC生瓷带市场前景及投资潜力科学调研报告.doc
- 对德国职业教育特色的认识与思考.doc
- 2013-2018年我国酥糖 市场深度剖析及风险预警评估报告.doc
- 新版细胞信号转导.ppt
- 如何编制发改委立项用(甲级)制线织布项目可行性研究报告(可研报告+甲级+立项+贷款).pdf.pdf
- 伺服内部培训资料-Q系列.ppt
- 第七章 粗纱.ppt
- 复杂系统可靠性分配的优化方法.pdf
- 2011年暑假闭学仪式讲话稿.doc
- 吉林省辽源市东辽县第一高级中学2025届高考仿真卷数学试卷含解析.doc
- 2025届四川省遂宁市重点中学高考全国统考预测密卷数学试卷含解析.doc
- 2025届福建省仙游县郊尾中学高三第三次模拟考试语文试卷含解析.doc
- 2024年安徽阜阳兴泉发展有限公司下属子公司公开招聘工作人员7人笔试参考题库附带答案详解.pdf
- 2025届江苏省无锡市石塘湾中学高三冲刺模拟英语试卷含解析.doc
- 贵州省黔东南州锦屏县民族中学2025届高三第二次联考英语试卷含解析.doc
- 辽宁师大附中2025届高三第四次模拟考试数学试卷含解析.doc
- 重庆市云阳江口中学2025届高考冲刺押题(最后一卷)语文试卷含解析.doc
- 安徽省阜阳市界首市2025届高三第一次调研测试数学试卷含解析.doc
- 2025届黑龙江省牡丹江市高考仿真卷数学试卷含解析.doc
文档评论(0)