#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语言版的更多相关文章

  1. c语言数据结构之线性表的顺序存储结构

    线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...

  2. 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)

    温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...

  3. 【Java】 大话数据结构(1) 线性表之顺序存储结构

     本文根据<大话数据结构>一书,实现了Java版的顺序存储结构. 顺序存储结构指的是用一段地址连续的存储单元一次存储线性表的数据元素,一般用一维数组来实现. 书中的线性表抽象数据类型定义如 ...

  4. 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现

    逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...

  5. c数据结构 -- 线性表之 顺序存储结构 于 链式存储结构 (单链表)

    线性表 定义:线性表是具有相同特性的数据元素的一个有限序列 类型: 1:顺序存储结构 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构 算法: #include <stdio. ...

  6. 线性表的顺序存储结构——java

    线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...

  7. 2.2_线性表的顺序存储结构_参考集合ArrayList

    [线性表的顺序存储从结构] 指的是用一段连续的存储单元一次储存线性表的数据元素. [线性表的顺序存储的结构代码 C语言版] #define MAXSIZE 20 /*存储空间初始分配量*/ typed ...

  8. C++编程练习(1)----“实现简单的线性表的顺序存储结构“

    线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素. 故可以用数组来实现顺序存储结构. 用C++编写的利用数组实现简单的读取.插入和删除功能的线性表. #include< ...

  9. 线性表的顺序存储结构之顺序表类的实现_Java

    在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...

随机推荐

  1. ok6410 u-boot-2012.04.01移植五支持DM9000

    继ok6410 u-boot-2012.04.01移植四后,开发板基本已支持MLC NAND,但还有一些细节地方修改,这节增加DM9000支持,通过网卡tftp程序到内存,接着通过NAND命令写到NA ...

  2. Python 函数简介 之二

    1.当函数有多个返回值时, 其多个返回值将以元组的形式出现 def test1(): print("in the test1") return 'end' def test2(): ...

  3. 办理康卡迪亚大学(本科)学历认证『微信171922772』Concordia学位证成绩单使馆认证Concordia University

    办理康卡迪亚大学(本科)学历认证『微信171922772』Concordia学位证成绩单使馆认证Concordia University Q.微信:171922772办理教育部国外学历学位认证海外大学 ...

  4. es5 数组

    一. 数组申明 var a = new Array(5)  会生成一个长度为5 每个元素都是undifined的数组 var a = new Array(1,2,3) 跟 var a = [1,2,3 ...

  5. JavaEE XML DOM创建

    DOM创建XML @author ixenos 1.思路: 先封装构建一颗DOM树,然后将DOM树转换成XML文件 2.三种写DOM树到XML文件的方式: 1)使用DOM(或DOM4J.JDOM) 2 ...

  6. Ubuntu中Qt5.7.0无法输入中文

    把libfcitxplatforminputcontextplugin.so复制到安装的Qt目录下的两个文件夹中 sudo apt install fcitx-frontend-qt5 sudo cp ...

  7. Ubuntu中Qt5.7.0的安装及opencv2.4.13配置

    去官网下载qt-opensource-linux-x64-5.7.0.run,到"下载"目录 Ctrl+Alt+T打开终端 cd /home/jv/下载sudo mv qt-ope ...

  8. UGUI和现实世界的比例关系

    之前测试过默认大小的 Cube 在现实中的 比例关系,得出基本单位为 m 的结论,至于 UGUI和现实世界的比例关系 看下图就知道了: Cube Collider 的大小: Button 的大小: 其 ...

  9. [JS]省市区数据及方法调用

    调用方法: function GetProvinceByid(id) { if (id == null || id == undefined || id == "") return ...

  10. ios微信支付成功后点击左上角返回不走回调的问题

    最近做微信支付发现ios9以后出现的跳转其他app后左上角有返回xxx功能会影响微信支付回调,情况如图 返回后不走下面的方法 - (BOOL)application:(UIApplication *) ...