数据结构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), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
随机推荐
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
測试源代码: //測试派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace ...
- 在Ubuntu下利用Eclipse调试FFmpeg
[编辑]第一步:准备编译环境 .tar.bz2 -2245/ ./configure -linux-i586.tar.gz 解压后得到jre1.7.0_17目录 最后通过java -version检查 ...
- onInterceptTouchEvent和onTouchEvent调用时序(转)
onInterceptTouchEvent和onTouchEvent调用时序 onInterceptTouchEvent()是ViewGroup的一个方法,目的是在系统向该ViewGroup及其各个c ...
- jquery基础研究学习【HTML】
jQuery HTMLjQuery 捕获jQuery 设置jQuery 添加元素jQuery 删除元素jQuery CSS 类jQuery css() 方法jQuery 尺寸 笔记:
- Android平台录音音量计的实现
今天博主要给大家分享的是怎样在Android平台上实现录音时的音量指示计.开门见山.先来看一张Demo的效果图: 如上图所看到的,两个button各自是開始录音和停止录音,中间的两个数字前后分别代表音 ...
- 读书笔记-HBase in Action-第三部分应用-(1)OpenTSDB
OpenTSDB是基于HBase的开源监控系统,能够支持上万规模集群监控和上亿数据点採集. 当中TSDB代表Time Series Database,OpenTSDB在时间序列数据的存储和查询上都做了 ...
- SharePoint解决方案及开发系列(1)-BPM
自从2008年做SharePoint第一个项目至今,不知不觉已经快7个年头了:上次听涂曙光老师的讲座,有机会能跟他面对面地沟通(“我是看您的blog长大的”).刚换了新工作,暂时比较闲,乘着这段时间对 ...
- 使用memcache进行账号验证服务
适用环境是需要频繁进行账号和请求合法性验证的地方 大致思路: 1.登陆时,服务器端接收一个账号和密码,还可以再加上用户的ip等信息通过md5等加密算法计算出一个定长的字符串作为用来验证的token 2 ...
- 【机器学习算法-python实现】svm支持向量机(3)—核函数
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gshengod/article/details/24983333 (转载请注明出处:http://b ...
- 深入理解ByteBuffer(转)
转:http://blog.csdn.net/workformywork/article/details/26699345?utm_source=tuicool&utm_medium=refe ...