数据结构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), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
随机推荐
- Redis源码阅读-Dict哈希字典
Dict和Java中的HashMap很相似,都是数组开链法解决冲突. 但是Redis为了高性能, 有很多比较微妙的方法,例如 数组的大小总是2的倍数,初始大小是4. rehash并不是一次就执行完,而 ...
- NYOJ 613 免费馅饼
免费馅饼 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...
- 详细的linux目录结构详细介绍
详细的linux目录结构详细介绍 --树状目录结构图 下面红色字体为比较重要的目录 1./目录 目录 描述 / 第一层次结构的根,整个文件系统层次结构的根目录 /bin/ 需要在单用户模式可用的必要命 ...
- memcached使用总结
我的linux版本信息:Linux version 4.4.0-78-generic (buildd@lgw01-11) (gcc version 5.4.0 20160609 (Ubuntu 5.4 ...
- JQ多种刷新方式
下面介绍全页面刷新方法:有时候可能会用到 window.location.reload()刷新当前页面. parent.location.reload()刷新父亲对象(用于框架) opener.loc ...
- python设置环境变量
方法1: 当程序开发完毕,就可以添加到 '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages'中 ...
- PAT 1051. 复数乘法 (15)
复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1:也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形 ...
- apche安装教程
从Apache官网下载windows安装版的Apache服务器了, 现在分享给大家. 1 进入apache服务器官网http://httpd.apache.org/,这里我们以下载稳定版的 htt ...
- struts2中的ModelDriven使用
http://www.cnblogs.com/Topless/archive/2012/01/17/2324980.html 例子都为struts2中的文档例子 JSP提交数据: <s:fo ...
- C调用Lua中的函数解析table
Passing Tables to Lua Functions A use case that happens often is the passing of tables to and from L ...