线性表
一、线性表的定义
- 零个或多个数据元素的有限序列
二、线性表的特点
- 1.它是一个序列
a.数据元素之间是有序的
%nbsp;b.数据元素之间是一对一的关系 - 2.有限性
三、存储结构
1.顺序存储结构
2.链式存储结构
– 解决以下问题
(1) 顺序表的基本描述
(2)顺序表的查找;
代码如下:
LinkList LocateELem (LinkList L,Elemtype e) {
p=L->next;j++;
while(p)
{
if(p->data == e)
return p;
else
{ p=p->next;
j++;
}
}
return p;
}
(3)顺序表的插入;
代码如下:
int ListInsert(LinkList &L,int i,ElemType e){
p=L;j=1;
while(p&&j<i){p=p->next;++j;} //寻找第i−1个结点
if(!p||j>i−1)return 0; //i大于表长 + 1或者小于1
q=new LNode; //生成新结点s
q->data=e;
q->next=p->next; //将结点s插入L中
p->next=q;
return 1;
}
(4)顺序表的删除;
代码如下:
int ListDelete_L(LinkList &L,int i){
p=L;j=1;
while(p &&j<i){//寻找第i个结点,并令p指向其前驱
p=p->next; ++j;
}
if(!p||j>i) return 0; //删除位置不合理
q=p->next; //临时保存被删结点的地址以备释放
p->next=q->next; //改变删除结点前驱结点的指针域
delete q; //释放删除结点的空间
return 1;
}
(5)顺序表的取值
int GetElem(LinkList L,int i,ElemType &e){
p=L->next;
j=1; //初始化
while(p&&j<i){ //向后扫描,直到p指向第i个元素或p为空
p=p->next;
++j;
}
if(!p || j>i) return 0; //第i个元素不存在
e=p->data; //取第i个元素
return 1;
}