数据结构之线性表的顺序存储结构的实现--C语言版
#include <stdio.h>
#include <stdlib.h>
#include <time.h> #define INIT_SIZE 100
#define PER_INCREMENT 10 typedef struct SqList{
char *Element;
int Length;
int ListSize;
}SqList; void InitSqList(SqList *L)
{
L->Element=(char*)malloc(sizeof(SqList)*INIT_SIZE);
if(!L->Element) exit(0);
L->Length=0;
L->ListSize=INIT_SIZE;
} void createSqList(SqList *L)
{
char c;
while((c=getchar())!='\n')
{
if(c!=' ')
{
*(L->Element+L->Length)=c;
L->Length++;
}
}
} char getElement(SqList L,int pos)
{
return *(L.Element+pos-1);
} void InsertElement(SqList *L,int pos,char e)
{
if(pos<1||pos>L->Length+1) exit(0);
if(L->Length>=L->ListSize)
{
L->Element=(char*)realloc(L->Element,sizeof(char)*(PER_INCREMENT+L->ListSize));
L->ListSize=L->ListSize+PER_INCREMENT;
}
char *p=L->Element+pos-1;
char *q;
for(q=L->Element+L->Length-1;q>=p;--q)
*(q+1)=*q;
*p=e;
L->Length++;
} char DeleteElement(SqList *L,int pos)
{
if(pos<1||pos>L->Length) exit(0);
char *p=L->Element+pos;
char *q;
for(q=p;q<L->Element+L->Length;++q)
*(q-1)=*q;
L->Length--;
return *p;
} void destroy(SqList *L)
{
free(L->Element);
} void printSqList(SqList L)
{
int i=0;
for(;i<L.Length;++i) printf("%c ",*(L.Element+i));
} void reversePrint(SqList L)
{
int i=L.Length-1;
for(;i>-1;--i) printf("%c ",*(L.Element+i));
} int main()
{
SqList L; // 初始化和创建函数的测试
InitSqList(&L);
createSqList(&L);
printSqList(L);
printf("\n");
reversePrint(L); printf("\n"); // 测试增加函数
int index=0;
int num=0;
srand((unsigned)time(NULL));
for(;index<100;index++)
{
num=rand()%(index+1)+1;
InsertElement(&L,num,num+'0');
}
printSqList(L);
printf("\n");
reversePrint(L);
printf("\n%d",L.Length); printf("\n"); // 测试删除函数
index=0;
num=0;
srand((unsigned)time(NULL));
for(;index<50;index++)
{
num=rand()%(L.Length);
DeleteElement(&L,num);
}
printSqList(L);
printf("\n");
reversePrint(L);
printf("\n%d",L.Length);
return 0;
}
数据结构之线性表的顺序存储结构的实现--C语言版的更多相关文章
- c语言数据结构之线性表的顺序存储结构
线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...
- 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)
温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...
- 【Java】 大话数据结构(1) 线性表之顺序存储结构
本文根据<大话数据结构>一书,实现了Java版的顺序存储结构. 顺序存储结构指的是用一段地址连续的存储单元一次存储线性表的数据元素,一般用一维数组来实现. 书中的线性表抽象数据类型定义如 ...
- 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...
- c数据结构 -- 线性表之 顺序存储结构 于 链式存储结构 (单链表)
线性表 定义:线性表是具有相同特性的数据元素的一个有限序列 类型: 1:顺序存储结构 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构 算法: #include <stdio. ...
- 线性表的顺序存储结构——java
线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...
- 2.2_线性表的顺序存储结构_参考集合ArrayList
[线性表的顺序存储从结构] 指的是用一段连续的存储单元一次储存线性表的数据元素. [线性表的顺序存储的结构代码 C语言版] #define MAXSIZE 20 /*存储空间初始分配量*/ typed ...
- C++编程练习(1)----“实现简单的线性表的顺序存储结构“
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素. 故可以用数组来实现顺序存储结构. 用C++编写的利用数组实现简单的读取.插入和删除功能的线性表. #include< ...
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
随机推荐
- hdu 4515 年月份模拟题
小Q系列故事——世界上最遥远的距离 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) ...
- stata
1.只打开部分变量: use var1 var2 using "C:\data\2014.dta" 2.打开部分样本(5~10个样本) use "C:\data\2014 ...
- spring mvc页面显示图片失败
在配置文件中需要映射静态资源 <!-- 当在web.xml 中 DispatcherServlet使用 <url-pattern>/</url-pattern> 映射时, ...
- ubuntu安装 cober 笔记
设置原始Ubuntu原始Root密码 安装Mysql 安装Jdk 拷贝Cober到Linux,启动服务(看日志) 设置原始Ubuntu原始Root密码 $ sudo passwd root 修改系统文 ...
- Java构造器的深入理解
[构造器与方法的深入理解] 构造器的深入理解 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 [博客地址]http://www.cnblogs.com/grl2 ...
- 算法笔记_015:快速排序(Java)
目录 1 问题描述 2 解决方案 2.1 快速排序原理简介 2.2 具体编码 1 问题描述 给定一组数据,使用快速排序得到这组数据的非降序排列. 2 解决方案 2.1 快速排序原理简介 引用自百度百科 ...
- Python print报ascii编码异常的靠谱解决办法
之前遇到此异常UnicodeEncodeError: 'ascii' codec can't encode characters...,都是用这种方式解决:sys.setdefaultencoding ...
- 《如何阅读一本书》(How to Read a Book)
值得一读的书,有深入浅出,也有并不能完全读懂的部分,以下是第11章对之前内容的总结整理. 阅读的层次 1. 基础阅读 2. 检视阅读 3. 分析阅读 4. 主题阅读 分析阅读 第一阶段:这本书在谈些什 ...
- c++ 常见问题之 vector 和数组
初始化vector 对象: vector<T> v1 v1 为空vector vector<T> v2(v1) vector<T> v2 = v1 vector&l ...
- js学习笔记1
就是调用对象是一个Array,对Array类型增加了一个原型写法的函数,一般写一些扩展时经常用.比如判断一个元素是否在数组中之类的 Array.prototype.inArray=function(v ...