顺序储存结构表(sqlist)

本文详细介绍了顺序存储结构SQLIST,包括数据的存储结构概念、顺序存储的特性,以及C语言中实现顺序存储结构的结构体定义、初始化、显示、查找、插入和删除等基本操作。示例代码展示了如何在顺序表中进行元素操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数据的存储结构(或者物理结构)

数据的存储结构指的是数据的逻辑结构在计算机存储器中的映像。存储结构是通过计算机语言所编制的程序来实现的,因而使依赖于据提的计算机语言,数据结构较常用的有四种储存表示,今天主要讲了顺序存储。

2、顺序存储(Sequential Storage):将数据结构中各元素按照其逻辑顺序存放于存储器一片连续的存储空间中(如c语言的一维数组),必须按照一定的线性方式存储。

3、顺序存储的c语言定义:

sqlist.h:

#ifndef   _SQLIST_H

#define  _SQLIST_H

#define N = 50


//类型转换

tyoedef  data_t  int ;

//定义一个结构体,并有一个结构体对象(sqlist)和一个指针类型(*sqlink)

typedef struct{

data_t data[N];

int last;

}sqlist_t, *sqlink_t;


//函数声明

void ClearSqlist(sqlink_t   L);

void ShowList(sqlink_t   L );

int Locate(sqlink_t  L,data_t x );

int InsertSqlist(sqlink_t   L,data_t  x, int i);

int DelSqlist(sqlink_t   L,int i);


#endif


###################################################################

sqlist.c:                             //   模块函数

#include  <stdio.h>

#include  "sqlist.h"


//  将顺序表内置空

void ClearSqlist(sqlink_t    L)

{

L   ->last   =  -1; 

}

//打印顺序表元素

void ShowList(sqlink_t    L )

{

int  i;

for(i=0;  i<L -> last;  i++)

{

printf(" %d\n",L -> data[i]);

}

printf("\n");
}

//在顺序表中查找元素x第一次出现的位置

//查询失败返回 -1。

int  Locate(sqlink_t  L,data_t  x)

{

int i=0;

while((i <=  L -> last)    &&   (L->data[i]  !=  x))

{

i++;

if(i <= L -> last)

return   i;

else

return -1;

}

}

//在顺序表L中插入一个元素x,插入位置为i

//插入失败返回-1

int InsertSqlink(sqlink_t  L,data_t x, int i)

{

int j;                    //判断插入位置

if( (i  <  0)   ||   (i >= L->last  +1)   ||  (L ->last  >N-1))    //输入i值合法性判断

return -1;

else

{

for(j = L ->last;   j  >=  i;  j--)

{

L -> data[j+1]  =  L->data[j];                  //从last位数往后移一位(考虑若数组内存放满了数据)

}

}

L -> data[i]  =  x;                                                      //插入数值

L ->last ++;                                                              //last值自增

}

///从顺序表中删除第i个元素
//成功返回0 

int DelSqlink(sqlink_t L,int i)

{

int j;

if( (i  <  0)   ||   (i >= L->last  +1)   ||  (L ->last  >N-1))    //输入i值合法性判断

return -1;

else

{

for(j=j+1;  j<=L ->lasr;  j++)

{

L ->data[j-1] = L ->data[j];

}

L ->last --;

}

}

##################################################################################

main.c

#include <stdlib.h>

#include <stdio.h>

#include “sqlink.h”


int main(void)

{

int i;

sqlink_t  L;

L = (sqlink_t)malloc( sizeof(sqlist_t));

ClearSqlist(L);

for(i=0; i<50; i++)

{

L ->data[i] = i;

}

L -> last  =49;

//printf("Locate(L,26) = %d\n",Locate(L,26));

//InsertSqlink(L,1111,0);

//ShowList(L);

DelSqlink(L,25);

ShowList(L);

return 0;

}

############################################################

以上主要是顺序存储结构的定义及基础函数的编写。












if( (i  <  0)   ||   (i >= L->last  +1)   ||  (L ->last  >N-1))    //输入i值合法性判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值