数据结构线性表1
一、线性表的定义
线性表是具有相同数据类型的n个数据元素的有限序列(有限并且有次序)
特点:
1.个数有限
2.具有顺序性
3.每个元素都是数据元素
4.元素的数据类型都相同
5.元素具有抽象性
二、线性表的基本操作
定义,初始化,插入/删除(静态为例),查找(动态为例)
静态分配代码如下(示例):
#include <stdio.h>
#define MaxSize 10
typedef struct {
int data[MaxSize];
int length;
}SqList;
//初始化操作
void InitList(SqList &L){
for(int i=0;i<MaxSize;i++)
L.data[i] = 0;
L.length = 0;
}
//插入操作
bool ListInsert(SqList &L,int i,int e){//在i位置插入元素e
if(i<1||i>L.length+1)//非法位置
return false;
if(L.length>=MaxSize)//内存空间满
return false;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return true;
}
//删除操作
bool ListDelete(SqList &L,int i,int e){//删除i位置的元素,并返回该位置元素值
if(i<1||i>L.length+1)//非法位置
return false;
e = L.data[i-1];
for(int j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return true;
}
//主程序
int main(){
SqList L;
InitList(L);
```插入数据```
return 0;
}
动态分配代码如下(示例):
#include<stdio.h>
#define InitSize 10
typedef struct {
int *data;//定义一个int类型的指针
int MaxSize;//最大长度
int length;//当前长度
}SeqList;
//初始化操作
void InitList (SeqList &L){
L.data = (int *)malloc(InitSize*sizeof(int));
L.MaxSize = InitSize;
L.length = 0;
}
//增加长度
void IncreaseSize (SeqList &L,int len){
int *p = L.data;//把L中的data指针赋值给p指针
L.data = (int *)malloc((L.MaxSize+len)*sizeof(int));
for(int i=0;i<L.length;i++)
L.data[i]=p[i];
L.MaxSize = L.MaxSize+len;
free(p);
}
//按值查找
int locateElem(SeqList L,int e){
for(int i=0;i<L.length;i++)
if(e==L.data[i])
return i+1;
return 0;
}
//主程序
int main(){
SeqList L;
InitList(L);
```插入数据```
IncreaseSize(L,5)
return 0;
}
总结
关于线性表中顺序表的定义方法以及基本操作的代码实现