数据结构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), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
随机推荐
- 【文献阅读】Deep Residual Learning for Image Recognition--CVPR--2016
最近准备用Resnet来解决问题,于是重读Resnet的paper <Deep Residual Learning for Image Recognition>, 这是何恺明在2016-C ...
- 查看vnc server的日志
grep vnc /var/log/messages 转自: http://blog.csdn.net/denghua10/article/details/39107309
- 本地虚拟机LNMP环境安装
首先上传源码包到linux中(本人上传到根目录中),随意上传能找到即可 一.配置YUM源(如果已经配好就不许要重新配置) 挂载光驱要挂载到/mnt下 Mount /dev/cdrom /mnt ...
- Android拍照生成缩略图
在Android 2.2版本中,新增了一个ThumbnailUtils工具类来是实现缩略图,此工具类的功能是强大的,使用是简单,它提供了一个常量和三个方法.利用这些常数和方法,可以轻松快捷的实现图片和 ...
- EventBus的使用详解,功能为在Fragment,Activity,Service,线程之间传递消息
最近跟同事用到了EventBus的使用,之前不太了解EventBus,查阅资料发现EventBus还挺好用的,用法比较简单,下面就把我看到的关于EventBus的博客分享给大家,里面介绍了很多的使用详 ...
- smarty模板 变量 运算符 表达式 流程控制 函数
① 从配置文件中读取配置: 1,在模板页面加载配置文件 html页面 不是php页面<{config_load file='fo.conf'}> 2,在需要用到配置的地方加<{#si ...
- hdu 4414 Finding crosses【简单模拟】
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4414 CSUST:点击打开链接 Finding crosses Time Limit: 2000/1000 ...
- ls --color=xxx
默认的ls是由"ls --color=auto"组成的,假如某个目录中的文件特别多,我不希望显示颜色(可以加快显示),那就需要指定单独的参数. [root@localhost ...
- js绑定键盘enter事件
js写法: document.onkeydown = function(event){ var event=document.all?window.event:event; if((event.key ...
- python 捕获异常详细信息
import os import sys import traceback BasePath = os.path.dirname(os.getcwd()) sys.path.append(BasePa ...