#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. c++课程设计之通讯录电话簿管理设计

    功能 本程序是利用c++实现一个简单的电话簿管理.我是在Linux下利用g++直接编译的,完全可以将文件在VC中编译执行.源程序如有需要自行下载,点此下载,下载程序编译执行 程序执行效果如下; 1.新 ...

  2. javascript实现 京东淘宝等商城的商品图片大图预览功能

    在京东和淘宝等购买东西的时候,我们会经常预览左侧商品展示图片,把鼠标放到原图,右侧就会有个大图显示出细节.本文将带领大家写一个这样简单的功能! 一.实现原理 当鼠标移入某一图片内部时,图片上部会出现一 ...

  3. [ios2]iOS 图片与内存 【转】

    第一种解决方法:选择适当的加载方式 在程序的开发过程中,经常会用到很多的图片,适当的选择加载图片的方式就显得格外的重要,如果选择不得当,很容易造成内存吃紧而引起程序的崩溃. 这里介绍一下几种常见的加载 ...

  4. 办理滑铁卢大学(本科)学历认证『微信171922772』UW学位证成绩单使馆认证University of Waterloo

    办理滑铁卢大学(本科)学历认证『微信171922772』UW学位证成绩单使馆认证University of Waterloo QQ/微信171922772办理毕业证成绩单.真实使馆及教育部学历认证★诚 ...

  5. Sql Server 日期格式化

    select CONVERT(date,myDtae,23),ID from myFirstTable; http://www.cnblogs.com/hantianwei/archive/2009/ ...

  6. putty连接远程局域网的MySql(不需要单独打开plink)

    3316 是本地端口,映射到远程内网的一台MySql主机 10.8.2.172

  7. 用js使得输入框input只能输入数字

        JS判断只能是数字和小数点1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g, ...

  8. QQSpamerUpdate

    2.00001,0,http://oia5k1lqi.bkt.clouddn.com/QQSpamer2.0%20BETA1.exe

  9. vultr新用户注册享受50美元优惠码,长期有效

    vultr vps服务器,我用了三年多,购买了几十台vps,性价比非常高. 近期,vutlr推出了最新优惠码DOMORE长期有效,新用户注册账号时候,可在付款方式界面输入这个优惠码,享受50美元余额, ...

  10. MyEclipse 中文注释乱码

    window-->preference-->general-->content type然后在<Content Types>中展开每一个子项,并在<Default ...