线性表是一种逻辑结构,顺序存储是一种存储结构,其他的存储结构还有链式存储;
学习记录顺序表的增删查改:
#define MaxSize 50
#include<stdio.h>
typedef struct{
int data[MaxSize];
int len;
}Sqlist;
//增删查改
bool List_Insert(Sqlist &L, int site, int num); //插入
bool List_Delete(Sqlist& L, int site, int &del);//删除
int Locate_Elem(Sqlist& L, int num); //查找
void Print_List(Sqlist L);
int main()
{
Sqlist L;
bool ret;
int del; //要删除的元素
int loc;
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.len = 3;
//插入
ret = List_Insert(L,2,60);
if (ret)
{
printf("插入成功\n");
Print_List(L);
}
else
printf("插入失败\n");
ret = List_Delete(L, 2, del);
if (ret)
{
printf("删除成功\n");
printf("删除的数据是%d\n", del);
Print_List(L);
}
else
printf("Delete fail\n");
loc = Locate_Elem( L, 2);
if (loc)
{
printf("查找成功\n");
printf("数据的位置是%d\n", loc);
}
else
printf("查找失败\n");
return 0;
}
bool List_Insert(Sqlist &L, int site, int num)
{
if (site > 0 && site <= L.len+1)
{
int i;
for (i = L.len; i >= site; i--)
L.data[i] = L.data[i - 1];
L.data[i] = num; //这时候i的值和site-1的值是相等的。
L.len++;
return true;
}
if(site<1||site>L.len+1)
return false;
if (L.len >= MaxSize)
return false;
}
void Print_List(Sqlist L)
{
int i;
for (i = 0; i < L.len; i++)
printf("%-3d", L.data[i]);
printf("\n");
}
bool List_Delete(Sqlist& L, int site, int &del)
{
if (site > 0 && site <= L.len)
{
int i;
del = L.data[site - 1];
for (i = site; i < L.len; i++)
L.data[i-1] = L.data[i];
L.len--;
return true;
}
if (site <1 || site>L.len)
return false;
if (L.len == 0)
return false;
}
int Locate_Elem(Sqlist& L, int num)
{
int i;
for (i = 0; i < L.len; i++)
if (L.data[i] == num)
return i + 1;
return 0;
}
全文几乎没有注释,标识符的命名就已经代表了要进行的操作