C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作
1、数据结构-顺序线性表的实现-C语言
#define MAXSIZE 100
//结构体定义
typedef struct
{
int *elem; //基地址
int length; //结构体当前长度
int listsize; //结构体最大长度
} Sqlist; //结构体类型名
//各项操作
void Show_Help()
{
printf("1---初始化线性表\n");
printf("2---销毁线性表\n");
printf("3---清空线性表\n");
printf("4---判断线性表是否为空\n");
printf("5---求线性表长度\n");
printf("6---获取线性表某位置元素\n");
printf("7---请输入元素的值,判断其在线性表中是否存在,并返回其下标,不存在则返回0\n");
printf("8---求直接前驱\n");
printf("9---求直接后继\n");
printf("10---在线性表指定位置插入元素\n");
printf("11---删除线性表指定位置元素\n");
printf("12---显示线性表全部元素\n");
printf("13---翻转线性表全部元素\n");
printf("退出,输入一个负数\n");
}
//初始化线性表
void InitList(Sqlist* L)
{
L->elem = (int*) malloc(MAXSIZE*sizeof(int)); //给线性表分配初始空间
if(!(L->elem)){
printf("分配失败\n");
return ;
}
L->length = 0;
L->listsize = MAXSIZE;
}
//销毁线性表
void DestroyList(Sqlist* L)
{
if(L->elem)
free(L->elem); //销毁只需释放刚才给基地址分配的空间即可
L->length = 0;
}
//清空线性表
void ClearList(Sqlist* L)
{
L->length = 0;
}
//判断线性表是否为空
int ListEmpty(Sqlist L)
{
if(L.length)
return 0;
else
return 1;
}
//求线性表长度
int ListLength(Sqlist L)
{
return L.length;
}
//获取线性表某位置元素
void GetElem(Sqlist L,int i,int* e)
{
e = L.elem[i-1];
}
//请输入元素的值,判断其在线性表中是否存在,并返回其下标,不存在则返回0
int LocateElem(Sqlist L,int e)
{
int position = 0;
for(int i=0; i<L.length; i++)
{
if(L.elem[i] == e)
{
position = i+1;
break;
}
}
return position;
}
//求直接前驱
void PriorElem(Sqlist L,int cur_e,int* pre_e)
{
pre_e = L.elem[cur_e-2];
}
//求直接后继
void NextElem(Sqlist L,int cur_e,int* next_e)
{
next_e = L.elem[cur_e];
}
//在线性表指定位置插入元素
void ListInsert(Sqlist* L,int i,int e)
{
for(int j=L->length; j>=i; j--)
{
L->elem[j] = L->elem[j-1];
}
L->elem[i-1] = e;
L->length++;
}
//删除线性表指定位置元素
void ListDelete(Sqlist* L,int i)
{
for(int j=i-1; j<L->length-1; j++)
{
(*L).elem[j] = (*L).elem[j+1];
}
L->length--;
}
//显示线性表全部元素
void TraverList(Sqlist L)
{
printf("线性表中的元素有:");
for(int i=0; i<L.length; i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
}
//翻转线性表全部元素
void Flip(Sqlist L)
{
int num = L.length / 2;
int* begin = &L.elem[num-1];
int* end = &L.elem[L.length-num];
int middle;
while(num)
{
middle = *begin;
*begin = *end;
*end = middle;
num--;
begin = &L.elem[num-1];
end = &L.elem[L.length-num];
}
printf("翻转成功\n");
}
欢迎转载,转载请标明出处哦
C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作的更多相关文章
- c语言数据结构之线性表的顺序存储结构
线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...
- 线性表&顺序线性表
第二章 线性表 参考文献:[数据结构(C语言版)].严蔚敏 本篇章仅为个人学习数据结构的笔记,不做任何用途. 2.1 线性结构的特点 (1). 存在唯一的一个被称为"第一个"的数据 ...
- 【C语言--数据结构】线性顺序表
线性表的本质: 1.线性表(List)是零个或者多个数据元素的集合: 2.线性表中的数据元素之间是有顺序的: 3.线性表中的数据元素个数是有限的: 4.线性表中的数据元素的类型必须相同: 定义: 线性 ...
- 动态分配的顺序线性表的十五种操作—C语言实现
线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...
- 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)
温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...
- Java数据结构之线性表
从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...
- 顺序线性表 ---- ArrayList 源码解析及实现原理分析
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7738888.html ------------------------------------ ...
- 用C#学习数据结构之线性表
什么是线性表 线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract),线性结构的特点是结构中的数据元素之间存在一对一的线性关系.这种一对一的关系指的是数据元素之间的位置关 ...
- 顺序线性表之大整数求和C++
顺序线性表之大整数求和 大整数求和伪代码 1.初始化进位标志 flag=0: 2.求大整数 A 和 B 的长度: int aLength = a.GetLength(); int bLength = ...
随机推荐
- ie6 ie7下报脚本错误"Expected identifier, string or number" 的原因和解决方法
在IE6和ie7里面,脚本报错"Expected identifier, string or number" 写下这个是个之前我已经很头疼了,因为我的代码在其他浏览器里都是正常的, ...
- 12-21C#电脑蓝屏效果(可以恶搞整人哦)、输入输出流(StreamReader/streamWriter)
一.winform电脑蓝屏效果 第一种方法:基本操作: 第一步:创建一个新的C#窗体“Form1”: 第二步:在设计窗口中,更改其属性: 1)text属性:将form1的text属性中的文字取消掉,然 ...
- ks8基础(1) etcd安装
下载安装 https://github.com/coreos/etcd/releases 在这网页,可以看到有多个版本共选择. 下载3.25 解压后, cd etcd-v3.2.5-linux-amd ...
- 配置php的curl模块问题
问题 checking for cURL in default path... not foundconfigure: error: Please reinstall the libcurl dist ...
- DAY12-前端之HTML
一.html初识 web服务本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ...
- Java was started but returned exit code=13 问题解决
我在安装完jdk后,也对环境进行了配置,且环境的配置是没有问题的.最后我下载了eclipse,然后打开之后就发现了以下图所示的错误: Java was started but returned exi ...
- java GC是在什么时候,对什么东西,做了什么事情?
1.新生代有一个Eden区和两个survivor区,首先将对象放入Eden区,如果空间不足就向其中的一个survivor区上放,如果仍然放不下就会引发一次发生在新生代的minor GC,将存活的对象放 ...
- 【276】◀▶ Python 字符串函数说明
参考:Python 字符串函数 01 capitalize 把字符串的第一个字符大写,其他字母变小写. 02 center 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串. ...
- iBase4J项目笔记
目录: 1 数据库密码加密 2 service层概述 3 web层概述 4 后端CRUD 4.1 READ 4.2 UPDATE 4.3 CREATE 4.4 DELETE 5 facade层概述 1 ...
- GCD 学习(四) dispatch_group
如果想在dispatch_queue中所有的任务执行完成后在做某种操作,在串行队列中,可以把该操作放到最后一个任务执行完成后继续,但是在并行队列中怎么做呢.这就有dispatch_group 成组操作 ...