C语言获取mysql表数据结构_c语言 数据结构 顺序表

一、顺序表简介

在计算机中用一组连续地址的内存单元来存储整张线性表。这种存储结构称为顺序存储结构,这种存储结构下的线性表称之为 顺序表。

顺序表的特征:

1 有一个唯一的表名来标识顺序表

2 内存单元连续存储,一张顺序表占一个连续的存储空间

3 数据按顺序存放,数据有前后顺序之区分

二、顺序表定义

1 静态定义一个顺序表:

类似于数组的定义:

int a[10];char b[20];

//定义了一个顺序表a 和一个顺序表b

2 动态定义一个顺序表:

#define SIZE 10

typedef struct{数据类型 *name;int length;int list; } list;

void initList(list *a){

a->name =(int *)malloc(SIZE*sizeof(数据类型));//指向结构体的首地址

if(!a->name) exit(0);

a->length =0;

a->list =SIZE;

}

//动态定义表步骤

1 定义一个list结构体,成员项: 指向首地址的指针变量

2 采用初始化函数,生成动态表

三、顺序表操作(插入与删除)

3.1 顺序表插入

3.1.1静态顺序表的数据插入操作

void insert(int a[SIZE],int length,int i,int info)

{

//参数说明 a[]顺序表 ,length 原顺序表中已存在数据的长度 , i:第i位置开始插入 , info:第i个位置插入info

if(length ==SIZE||i<1||i>length+1)

exit(0);//异常插入

//length==SIZE 检测当前顺序表的长度如果等于最大静态表的长度,如果是 则静态表已经到达最大值,则禁止插入新元素

//小于1 代表从第0位开始插入,插入位置错误

//i>length+1 代表元素不是插入到顺序表原有的数据中,不符合顺序表的定义规则

for(t=n-1;t>=i-1;t–)

a[t+1]=a[t] ;//元素向后移动

a[i-1]=info; //放置元素

length =length +1; //顺序表长度加1

}

3.1.2 动态顺序表数据插入操作

void insert(list *a,int i,int info){

if(i<1 || i>a->length+1 || a->length+1>a->list)

exit(0);

//增加顺序表空间

a->name =(int *)realloc(a->name,(a->list+1)*sizeof(数据类型);

//顺序表元素后移

int *t = &(a->name[i-1]);

int *p = &(a->name[a->length-1]);

for(;p>=t;p–)

*(p+1)=*p;

//放置元素

*t=info;

//顺序表长度加1

a->length=a->length+1;

a->list =a->list+1;

}

3.1.3 静态顺序表删除

//删除静态数据表中的 第i 个元素

void del(int a[SIZE],int length,int i){

if(i<0 ||i>length) exit(0);//非法操作

for(t=i-1;ta->length) exit(0);

a->name =(int *)realloc(a->name,(a->list-1)*sizeof(数据类型));

int *t = &(a->name[i-1]);

for(;tname+a->length;t++)

*(t)=*(t+1);

a->length =a->length-1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值