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;
}
############################################################
以上主要是顺序存储结构的定义及基础函数的编写。