线性表:最基础的数据结构,特点是一连一。
实现方式有顺序结构和链式结构,以下是顺序结构实现的代码。
/*
线性的顺序结构实现
函数:打印表;插入元素;删除元素。
*/
#include <stdio.h>
#include <Windows.h>
#define maxNum 100
//线性表的顺序结构
typedef struct spList
{
int data[maxNum];
int length;
}spList;
//打印表
void showList(spList* L);
//插入一个元素,value为插入的值,order为插入的位置
void insertElem(spList* L, int value, int order);
//删除一个元素,order为删除的位置
void deleteElem(spList* L, int order);
void showList(spList* L)
{
int i;
for (i = 0; i < L->length; i++)
{
printf("%d: %d\n", i, L->data[i]);
}
printf("表长:%d", L->length);
printf("\n\n");
}
void insertElem(spList* L, int value, int order)
{
int i;
for (i = L->length - 1; i >= order; i--)
{//将后面的数据元素后移
L->data[i + 1] = L->data[i];
}
L->data[order] = value; //插入
L->length++; //表长加一
}
void deleteElem(spList* L, int order)
{
int i;
for (i = order + 1; i < L->length; i++)
{//将后面的元素依次向前覆盖
L->data[i - 1] = L->data[i];
}
L->length--; //表长减一
}
int main(void)
{
spList List;
spList* L = &List;
for (int i = 0; i < 50; i++)
{//随便初始化一些值
L->data[i] = i;
}
L->length = 10;
//打印列表
showList(L);
//在下标为4的地方插入一个7并打印列表
insertElem(L, 7, 4);
showList(L);
//删除下标为6的元素并打印列表
deleteElem(L, 6);
showList(L);
system("PAUSE");
return 0;
}
参考:《大话数据结构》