博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构之顺序线性表
阅读量:5370 次
发布时间:2019-06-15

本文共 1502 字,大约阅读时间需要 5 分钟。

数据结构之顺序表

理解

  • 以数组的形式构造顺序线性表
  • 相邻元素之间有物理联系(地址有关系)
  • 与链式表相比,删除、插入比较麻烦
  • 与链式表相比,查找位置的元素的话很快,查找元素的位置一样都得循环
  • 可以从末尾向前循环,也能从任一位置开始向前向后循环

代码

#include 
#include
#define MAXSIDE 100 /*定义MAXSIDE值,线性表的大小*/ typedef int ElementType; /*定义元素类型 int double 等*/typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIDE]; Position Last;};/* 初始化 */List MakeEmpty(){ List L; L = (List)malloc(sizeof(struct LNode)); L->Last = -1; return L;} /* 查找 */#define ERROR -1Position Find( List L, ElementType X ){ Position i = 0; while( i <= L->Last && L->Data[i]!= X ) i++; if ( i > L->Last ) return ERROR; /* 如果没找到,返回错误信息*/ else return i;} /* 插入 */bool Insert( List L, ElementType X, Position P ){ Position i; if ( L->Last == MAXSIDE-1){ /* 说明空间已满,不能再插入*/ printf("线性表已满"); return false; } if ( P<0 || P>L->Last+1 ){ printf("位置不合法"); /* 插入给的位置P有问题*/ return false; } /* 将顺序线性表的位置P后的元素向后移(从最后一个元素开始)*/ for( i=L->Last; i>=P; i--) L->Data[i+1] = L->Data[i]; L->Data[P] = X; L->Last++; /* 表的末位置加一 */ return true; }/* 删除 */bool Delete( List L, Position P ){ Position i; if( P<0 || P>L->Last ){ printf("位置%d不存在元素",P); return false; } /* 将顺序线性表P位置后的每个元素向前移(从P+1位置开始)*/ for( i=P+1; i<=L->Last; i++) L->Data[i-1] = L->Data[i]; L->Last--; return true;}

转载于:https://www.cnblogs.com/chenshaowei/p/8893601.html

你可能感兴趣的文章
ubuntu中文英文环境切换
查看>>
[sql]mysql启停脚本
查看>>
[elk]Mutate filter plugin增删改查字段
查看>>
Java内功心法,行为型设计模式
查看>>
向github项目push代码后,Jenkins实现其自动构建
查看>>
jquery中的ajax方法参数的用法和他的含义
查看>>
BZOJ 1226: [SDOI2009]学校食堂Dining
查看>>
数组去重的几种方法
查看>>
包装类的自动装箱与拆箱
查看>>
ShareSDk的使用
查看>>
android使用web加载网页的js问题
查看>>
libvirt log系统分析
查看>>
poj 1068 Parencodings
查看>>
docker 数据卷管理
查看>>
如何让一个div的大小,从某一个特定值开始,随内容的增加而自动变化?
查看>>
P1977 出租车拼车(DP)
查看>>
iOS开发--完整项目
查看>>
我的博客园皮肤模板
查看>>
正则表达式
查看>>
java基础:不同进制的表现形式
查看>>