数据结构C语言版干货------->线性表之顺序表
/***************************************************************************
*项目 数据结构
*概要 逻辑结构:线性结构
物理结构:顺序结构
--------: 顺序表
*单位 西安电子科技大学
*作者 刘周
*日期 2018-3-5
***************************************************************************/
#ifndef _ORDERED_LIST_
#define _ORDERED_LIST_
#include "stdio.h"
#include "stdlib.h" /*定义顺序表的最大长度*/
#define MAX_SIZE 1000 typedef struct node {
int Element[MAX_SIZE];
int length;
}OrderedList;
typedef int ElementType; /***************************************************
*函数 Init()
*功能 初始化顺序表,将它的长度置1
*返回 void
***************************************************/
extern void Init(OrderedList * L); /***************************************************
*函数 GetLength()
*功能 获取顺序表当前元素的个数
*返回 int
***************************************************/
extern int GetLength(OrderedList L); /***************************************************
*函数 GetElement()
*功能 根据索引获取元素
*返回 ElementType
***************************************************/
extern ElementType GetElement(OrderedList L,int location); /***************************************************
*函数 GetLocation()
*功能 根据元素内容获取元素位置
*返回 int
***************************************************/
extern int GetLocation(OrderedList L,ElementType e); /***************************************************
*函数 GetPrior()
*功能 求前驱元素
*返回 ElementType
***************************************************/
extern ElementType GetPrior(OrderedList L,ElementType e); /***************************************************
*函数 GetNext()
*功能 求后继元素
*返回 ElementType
***************************************************/
extern ElementType GetNext(OrderedList L,ElementType e); /***************************************************
*函数 Insert()
*功能 前插操作
*返回 void
***************************************************/
extern void Insert(OrderedList *L,int loc,ElementType e); /***************************************************
*函数 Delete()
*功能 删除操作:根据索引进行删除
*返回 void
***************************************************/
extern void Delete(OrderedList* L,int loc); /***************************************************
*函数 Traverse()
*功能 遍历输出顺序表
*返回 void
***************************************************/
extern void Traverse(OrderedList L);
#endif // _ORDERED_LIST_
#include "OrderedList.h"
void Init(OrderedList* L)
{
L->length = ;
} int GetLength(OrderedList L)
{
return L.length;
} ElementType GetElement(OrderedList L,int location)
{
if(location>= && location < GetLength(L))
{
return L.Element[location-];
}
else
{
printf("位置参数非法!\n");
return ;
}
} int GetLocation(OrderedList L,ElementType e)
{
int i=;
while (i <= L.length && e!=L.Element[i-] )
i++;
if(i<=L.length)
return i;
else
{
printf("该表无此元素!\n");
return ;
}
} ElementType GetPrior(OrderedList L,ElementType e)
{
int loc=GetLocation(L,e);
if(loc!=)
{
if(loc==)
{
printf("第一个元素没有前驱!\n");
exit();
}
else
return L.Element[loc-];
}
} ElementType GetNext(OrderedList L,ElementType e)
{
int loc=GetLocation(L,e);
if(loc!=)
{
if(loc==L.length)
{
printf("最后一个元素没有后继!\n");
exit();
}
else
return L.Element[loc];
}
} void Insert(OrderedList *L,int loc,ElementType e)
{
if(L->length == MAX_SIZE) //表满
{
printf("表已经满了,无法继续插入!\n");
return;
}
if(loc < || loc > L->length+)//为什么+1,那个位置表示在最后添加
{
printf("loc的值:%d不合法!!!\n",loc);
return;
}
for(int i =L->length-;i>=loc-;i--)
{
L->Element[i+]=L->Element[i];
}
L->Element[loc-] = e;
L->length++;
} void Delete(OrderedList *L,int loc)
{
if(loc< || loc >(*L).length)//注意核实到底有没有+1
{
printf("\n::::::loc的值不合法!\n");
return;
}
for(int i =loc;i<(*L).length;i++)
{
L->Element[i-]=L->Element[i];
}
L->length--;
} void Traverse(OrderedList L)
{
if(L.length>)
{
printf("\n");
for(int i = ; i<L.length; i++)
{
printf("%d\t",L.Element[i]);
}
}
else
printf("这是一个空表!\n");
}
#include "OrderedList.h"
int main(void)
{
OrderedList L;
Init(&L);
printf("此时表长:%d\n",GetLength(L));
for(int i =;i<;i++)
Insert(&L,i+,i*);
Traverse(L);
Insert(&L,,);
Traverse(L);
Delete(&L,);
Traverse(L);
printf("\n此时表长:%d\n",GetLength(L));
printf("位置5是元素:%d\n",GetElement(L,));
printf("元素20在位置%d\n",GetLocation(L,));
return ;
}
数据结构C语言版干货------->线性表之顺序表的更多相关文章
- 深入浅出数据结构C语言版(7)——特殊的表:队列与栈
从深入浅出数据结构(4)到(6),我们分别讨论了什么是表.什么是链表.为什么用链表以及如何用数组模拟链表(游标数组),而现在,我们要进入到对线性表(特意加了"线性"二字是因为存在多 ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- [C++]数据结构:线性表之顺序表
1 顺序表 ADT + Status InitList(SeqList &L) 初始化顺序表 + void printList(SeqList L) 遍历顺序表 + int ListLengt ...
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
- 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明
<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛ <数据结构>课本源码合辑 习题集全解析 链接☛☛☛ ...
- [数据结构 - 第3章] 线性表之顺序表(C++实现)
一.类定义 顺序表类的定义如下: #ifndef SEQLIST_H #define SEQLIST_H typedef int ElemType; /* "ElemType类型根据实际情况 ...
- C#线性表之顺序表
线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
随机推荐
- k8s集群日志
硬件环境: 三台虚拟机, 10.10.20.203 部署docker.etcd.flannel.kube-apiserver.kube-controller-manager.kube-schedule ...
- yum 无法安装mysql
昨晚帮盆友搭建服务器时,一直出现yum mysql 无法安装.报错信息如下: Transaction Check Error: file /etc/my.cnf from install of my ...
- python selenium2示例 - 日志管理
logger继承图 前言 在自动化测试实践过程中,必不可少的就是进行日志管理,方便调试和生产问题追踪,python提供了logging模块来进行日志的管理.下面我们就logging模块的学习和使用进行 ...
- ubuntu 16.04.3 安装完成后的一些初始化工作
虚拟机安装前记得把桥接调好! 1. 重置root密码 sudo passwd, 然后系统会让你输入密码,这时输入的密码就是root用户的密码,su root切用户 2. 设置固定IP,有重启服务功能令 ...
- vue-router实现页面的整体跳转
直接看效果图: 代码地址:https://github.com/YalongYan/vue-router-jump
- html5小趣味知识点系列(一)required
都知道这个属性是检查你 是否填写了字段也就是说咱们不用判断输入的数值是否为空的情况了 但是这个属性一定要和form配合在一起使用单独的使用是不可以实现的 <!DOCTYPE html> & ...
- java解析字符串拆分单独元素
有时候,需求要求传递多个字符串参数,但是方法参数已经固定为单个String,笔者在学习unity和android之间的消息传递时就遇到这个问题,所以就写了这么一个解析字符串拆分单独元素的方法. 示例: ...
- I2C驱动详解
I2C讲解: 在JZ2440开发板上,I2C是由两条数据线构成的SCL,SDA:SCL作为时钟总线,SDA作为数据总线:两条线上可挂载I2C设备,如:AT24C08 两条线连接ARM9 I2C控制器, ...
- 我的Android进阶之旅------>Android 标签的用法
布局资源文件的根节点可以使用容器控件(如LinearLayout.FrameLayout等),也可以使用非容器控件(如:EditText.TextView等).对于非容器控件,只能在非容器控件标签中放 ...
- ABAP下载服务器文件到本机
转自http://blog.sina.com.cn/s/blog_701594f40100l8ml.html ABAP:下载服务器文件到本机 对服务器的文件进行读写操作,SAP提供了OPEN DATA ...