赞
踩
线性结构习惯称为线性表,线性表是n(n>=0)个数据元素构成的有限序列,表中除第一个元素外的每一个元素,有且只有一个一个前件;除最后一个元素外,有且只有一个后件。
非空数据表具有:
通常,线性表可以采用顺序存储和链式存储两种存储结构
顺序存储是存储线性表最简单的结构,具体做法是将线性表中的元素一个接一个地存储在一片相邻的存储区域中。这种顺序存储的线性表也被称为顺序表
顺序表具有一下两个基本特征:
在顺序表中,前件和后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面
插入
删除
#include <stdio.h>
#include <stdlib.h> //malloc()
#include <iso646.h> // or
#include <stdbool.h> // true false
#define MAXSIZE 10
typedef int ElemType;
// 定义线性表
typedef struct
{
/* data */
ElemType *elem;
int len;
}SqList;
// 初始化线性表
bool IniSqList(SqList *l)
{
l->len=0;
l->elem=(ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
if(l->elem==NULL)
return false;
return true;
}
// 输出线性表内容
void ShowSqList(SqList *l)
{
for(int i=0;i<l->len;i++)
printf("%d ",l->elem[i]);
}
// 获取某个元素
int GetData(SqList *l,int index)
{
if(index<0 or index>l->len)
return false;
return l->elem[index];
}
// 插入数据
bool InsertData(SqList *l,int index,ElemType a)
{
if(l->len==MAXSIZE) // 判断表是否满
return false;
if(index<1 or index >l->len+1) // 判断表插入位置是否合理
return false;
if(index<=l->len)
{
for(int i=l->len;i>=index;i--)
{
l->elem[i]=l->elem[i-1];
}
l->len++; // 长度+1
l->elem[index-1]=a; // 插入新元素
}
return true;
}
// 删除指定数据
bool DeleteData(SqList *l,int index)
{
if(index<0 or index>l->len) // 判断表删除位置是否合理
return false;
for(int i=index-1;i<l->len-1;i++)
{
l->elem[i]=l->elem[i+1];
}
l->elem[l->len-1]=NULL; // 删除末尾元素
l->len--; // 长度-1
}
// 加载数据
void LoadSqList(SqList *l,int index)
{
for(int i=0;i<index;i++)
{
l->elem[i]=i+1;
l->len++;
}
}
int main(void)
{
SqList list;
IniSqList(&list);
LoadSqList(&list,7);
ShowSqList(&list);
printf("\n");
// InsertData(&list,1,9);
DeleteData(&list,1);
ShowSqList(&list);
getchar();
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。