1、顺序表的基本数据单元
#define maxsize 12
typedef struct {
int data[maxsize]; // 表的储存空间
int last;
}sqlist, *sqlink; // *sqlink 表说明符
2、声明方法
// 置空表
void ClearList(sqlink L);
// 取表元素
int GetList(sqlink L, int no);
// 求表长
int LengthList(sqlink L);
// 插入元素
int InsertList(sqlink L,int data, int no);
// 删除元素
int DeleteList(sqlink L, int no);
// 定位元素
int LocateList(sqlink L,int data);
// 判空表
int EmptyList(sqlink L);
// 建空表
void CreateList(sqlink L);
// 打印表元素
void PrintList(sqlink L);
3、在main.c 里面实现方法
#include <stdio.h>
#include "sqlist.h"
// 建空表
void CreateList(sqlink L) {
int tempNo = 1;
int tempData = 0;
do{
printf("请输入书序表的第%d个元素",tempNo);
scanf("%d",&tempData);
if (tempData != -1){
L->data[tempNo-1] = tempData;
L->last = tempNo - 1;
tempNo++;
}
}while (tempNo<=maxsize&&tempData != -1);
}
// 判空表
int EmptyList(sqlink L) {
if (L->last == 0) {
return 1;
}else {
return 0;
}
}
// 定位元素
int LocateList(sqlink L,int data) {
int i = 0;
for(i=0; i < L->last; i++) {
if (L->data[i] == data) {
return i;
}
}
return 0;
}
// 置空表
void ClearList(sqlink L) {
L->last = -1;
}
// 取表元素
int GetList(sqlink L, int no) {
if (no < 0 || no > L->last) {
return -1;
}else {
return L->data[no];
}
}
// 求表长
int LengthList(sqlink L) {
return L->last;
}
// 插入元素
int InsertList(sqlink L,int data, int no) {
// 思路:
//1 判断表是否还有储存空间,如果没有,直接返回-1
if(L->last <= no && no >= 0) {
return -1;
}else {
int j = 0;
for (j = L->last; j >= no; j--) {
L->data[j+1] = L->data[j];
printf("j====%d\n",j);
}
L->data[no] = data ;
L->last++;
return 1;
}
//2 判断元素插入的位置是否在表的空间区域之内
//3 开始插入操作,for循环里面的注意点有
//必须从最后一个元素反过来遍历,例如最后一个元素下标是j,那么就是把j的下标对应的值,赋值给j+1,for循环的结束条件是j大于或等于i
//在for循环的结束后面进行插入操作
return 0;
}
// 删除元素
int DeleteList(sqlink L, int no) {
// 1先判断要删除的元素下标是否小于0或者大于当前列表的最大长度
// 2 进行删除操做
// for循环从要删除的元素下标开始,一直到列表的Last,全部数据往前挪一位
// 3 最后把列表的长度减一
if(L->last <= no && no >= 0) {
return -1;
}else {
int j = 0;
for (j = no; j < L->last; j++) {
L->data[j] = L->data[j+1];
printf("j====%d\n",j);
}
L->last--;
return 1;
}
return 0;
}
// 打印表元素
void PrintList(sqlink L) {
int i;
for (i = 0; i < LengthList(L); i++) {
printf("%d", L->data[i]);
}
printf("\n");
}
int main(int argc, const char * argv[]) {
// insert code here...
// 分配内存
sqlink L = (sqlink)malloc(sizeof(sqlist));
CreateList(L);
PrintList(L);
// 定位元素
// int i = 0;
// i = LocateList(L, 22);
// printf("22在%d的位置",i);
// 插入元素
// InsertList(L,2,4);
DeleteList(L,2);
PrintList(L);
int num = GetList(L,2);
printf("第三个元素是%d",num);
return 0;
}