线性表顺序存储结构实现
来源:互联网 发布:思迅软件合作伙伴社区 编辑:程序博客网 时间:2024/05/16 10:17
线性表顺序存储是指用一组地址连续的存储单元依次存放线性表中的各个元素,使得线性表中在结构上相邻的数据元素存储在相邻的物理存储单元中。
定义顺序存储结构如下所示:
#define MAXSIZE =100typedef struct{ int data[MAXSIZE]; int length;} List线性表的顺序查找,找到元素则返回值元素的位置,如果没有找到返回0,
int findListItem(List *L,int e){int k;for (k=0;k<L->length;k++)if(L->data[k]==e)return k+1;return 0;}线性表的插入,首先要判断插入的位置是否合法,如果插入的i的位置,则i到length的元素要向后移动,然后把要插入的元素值插到i位置,然后增加length的长度
int insListItem(List *L,int i,int e){int k;if (i<1||i>L->length+1)printf("插入位置不合法");if (L->length>=MAXSIZE)printf("表已满无法插入");for (k=L->length-1;k>=i-1;k--)L->data[k+1] = L->data[k];L->data[i-1] = e;L->length++;return 1;}线性表的删除元素,首先找到要删除的元素,如果没有找到返回error,否则删掉该元素,然后移动i到length的元素一位,顺序表长度减一。
int delListItem(List *L,int i){int k;if (i<1||i>=L->length)return 0;for (k = i-1;k<L->length;k++)L->data[k] = L->data[k+1];L->length--;return 1;}整合上面的操作。
定义头文件seqListStruct.h
#define MAXSIZE 100typedef struct{int length;int data[MAXSIZE];} List;int delListItem(List *L,int i);int insListItem(List *L,int i,int e);int findPelace;int findListItem(List *L,int e);定义删除文件delListItem.c
#include "seqListStruct.h"int delListItem(List *L,int i){int k;if (i<1||i>=L->length)return 0;for (k = i-1;k<L->length;k++)L->data[k] = L->data[k+1];L->length--;return 1;}
定义插入元素文件insListItem.c
</pre><pre name="code" class="plain">#include <stdio.h>#include "seqListStruct.h"int insListItem(List *L,int i,int e){int k;if (i<1||i>L->length+1)printf("插入位置不合法");if (L->length>=MAXSIZE)printf("表已满无法插入");for (k=L->length-1;k>=i-1;k--)L->data[k+1] = L->data[k];L->data[i-1] = e;L->length++;return 1;}定义查找元素文件findListItem.c
#include "seqListStruct.h"int findListItem(List *L,int e){int k;for (k=0;k<L->length;k++)if(L->data[k]==e)return k+1;return 0;}定义主函数main.c
#include <stdio.h>#include <stdlib.h>#include "seqListStruct.h" int main() { List L; int i; //初始化线性表 for (i=0;i<=10;i++) L.data[i] = i; L.length = 10; //执行删除线性表某个元素 delListItem(&L,5); for (i =0;i<L.length;i++) printf("%d\n",L.data[i]); //执行插入线性表某个元素 insListItem(&L,5,100); for (i=0;i<L.length;i++) printf("%d\n",L.data[i]); //执行查找线性表的某个元素 findPelace = findListItem(&L,100); if (findPelace) printf("查找到元素位置在%d\n",findPelace); else printf("没有查找到元素\n"); system("pause"); return 0; }
我们可以看到删除和插入操作的时间复杂度分别是(n-1)/2,n/2.查找操作的时间复杂度是1
0 0
- 线性表顺序存储结构实现
- 线性表顺序存储结构实现
- 线性表顺序存储结构一种实现
- 线性表 -- 顺序存储结构
- 线性表顺序存储结构
- 线性表-顺序存储结构
- 线性表顺序存储结构
- 线性表顺序存储结构
- 线性表--顺序存储结构
- 线性表顺序存储结构
- 线性表顺序存储结构
- 线性表顺序存储结构
- 线性表--顺序存储结构
- 线性表线性(顺序)存储结构
- 线性表的存储结构---顺序表的实现
- 线性表的顺序存储结构的实现
- 顺序存储结构线性表的C语言实现
- 线性表之顺序存储结构--C实现
- 一个Android图片(视频)选择器:android-media-picker
- Java动态代理
- HDU 1012 u Calculate e
- 飛飛(十七)用递归方法求a!
- 7 面向对象(成员变量和局部变量的区别,类作为形式参数的问题,匿名对象,封装,private关键字,this关键字,构造方法,类的初始化过程,static关键字)
- 线性表顺序存储结构实现
- 第63课:Spark SQL下Parquet内幕深度解密学习笔记
- CODEVS 1557 热浪
- bzoj 1385: [Baltic2000]Division expression
- SSO单点登录
- C++中文件流(fstream)的使用方法及示例
- java源文件的声明原则
- Android数据绑定组件RoboBinding使用详解
- 图着色问题