数据结构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), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
随机推荐
- 【cogs182】【USACO Jan07】均衡队形【st表】
题目描写叙述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按相同的顺序站好. 一日.农夫约翰决定为奶牛们举行一个"终极飞盘"比赛.为简化问题.他将从奶牛 ...
- PHP性能:序——谈性能
PHP性能:序——谈性能 这里不谈PHP的性能和其他语言的性能,这里讨论PHP自身的性能问题. 性能是什么? 通俗的来讲,性能,就是在固定的环境下能做的事情的多少. 为什么要性能? 1.每一个软件或网 ...
- mysql数据库的导出与导入
导出 在dos节目,切换到mysql依照文件夹的bin下.输入下面命令 mysqldump -u root -p nxu_life > nxu_life2.sql 运行完毕后.就能够看到在bin ...
- lua面向对象铺垫
Account = { balance = , withdraw = function(self, v) self.balance = self.balance - v end } --:操作符隐藏了 ...
- js跨浏览器复制: ZeroClipboard
实例结构: demo.html <script type="text/javascript" src='http://code.jquery.com/jquery.js'&g ...
- Android笔记之使用Glide加载网络图片、下载图片
Glide简介 不想说太多,真的很方便:P)可以节省我不少时间 GitHub地址:https://github.com/bumptech/glide 加载网络图片到ImageView Glide.wi ...
- 【题解】POJ2279 Mr.Young′s Picture Permutations dp
[题解]POJ2279 Mr.Young′s Picture Permutations dp 钦定从小往大放,然后直接dp. \(dp(t1,t2,t3,t4,t5)\)代表每一行多少人,判断边界就能 ...
- 【android】在Service的onStartCommand()中调用stopself()应该注意的问题
在Service的onStartCommand()中调用stopself()后并不会立马destroy掉service,而是等onStartCommand()运行完才destroy. public c ...
- JVM类加载流程
1.加载 a.装载类的第一个阶段 b.取得类的二进制流 c.转为方法区数据结构 d.在Java堆中生成对应的java.lang.Class对象 2.链接 a.验证(保证Class流的格式是正确的) 文 ...
- JVM垃圾回收时的可触及性
可触及的 1.从根节点可以触及到这个对象可复活的 1.一旦所有引用被释放,就是可复活状态 2.因为在finalize()中可能复活该对象不可触及的 1.在finalize()后,可能会进入不可触及状态 ...