<浙大>数据结构·1.1数组线性表[线性结构]
1.1数组线性表[线性结构]
- 利用数组的连续存储空间顺序存放线性表的各元素
主要操作的实现:
// 1.1数组线性表[线性结构]
#define MAXSIZE 100 // MAXSIZE 定义为 Data 数组的大小
typedef int ElementType; // ElementType 可定义为任意类型
typedef struct LNode *List;
struct LNode{
ElementType Data[MAXSIZE];
int Last; // Last 定义线性表的最后一个元素
};
List MakeEmpty(); //初始化顺序表
int Find(ElementType X,List L); //查找 X 第一次出现的下标
void Insert(ElementType X,int i,List L); //在下标为 i 的地方插入 X
void Delete(int i,List L); //删除下标为 i 的当前值
ElementType FindKth(int K,List L); //返回下标为 K 的当前值
int Length(List L); //返回顺序表的长度
// 初始化
List MakeEmpty()
{
List L;
L = (List)malloc(sizeof(struct LNode));
L->Last = -1;
return L;
}
// 按值差找
int Find(ElementType X, List L)
{
int cnt=0;
while(cnt <= L->Last && L->Data[cnt] != X) cnt++;
if(cnt > L->Last) return -1;
else return cnt;
return 0;
}
// 插入
void Insert(ElementType X, int i, List L)
{
int j;
if(L->Last == MAXSIZE-1)
{
cout << "表已满" << endl;
return;
}
else if(i<0)
{
cout << "位置不合法" << endl;
return;
}
for(int j=L->Last; j>=i; j--) L->Data[j+1] = L->Data[j];
L->Data[i] = X;
L->Last++;
return;
}
// 删除
void Delete(int i, List L)
{
int j;
if(i<0 || i>L->Last)
{
cout << "位置不合法" << endl;
return;
}
for(int j=i; j<L->Last; j++) L->Data[j] = L->Data[j+1];
L->Data[L->Last] = NULL;
L->Last--;
return;
}
// 按序差找
ElementType FindKth(int K,List L)
{
if(K<0 || K>L->Last)
{
cout << "位置不合法" << endl;
return NULL;
}
return L->Data[K];
}
// 表长
int Length(List L)
{
return L->Last+1;
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Panzer_Jack の 博客!
评论