数据结构之线性表的顺序存储结构的实现--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中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
随机推荐
- EL表达式学习
EL表达式取值 1.EL表达式的语法格式很简单: 以前编写jsp代码时,如果要获取表单中的用户名,一般使用 <%=request.getParameter("name")%& ...
- mysql数据库 触发器简单实例
触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/befo ...
- 从Chrome源码看浏览器如何构建DOM树
.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } p { font-size: 1 ...
- [oc] instancetype vs id for Objective-C 【转】
原贴地址:http://blog.csdn.net/lyy_whg/article/details/12846055 http://www.iwangke.me/2013/01/06/instance ...
- 2017年IT互联网圈跑会指南~
啦啦啦~要放假啦,还有十多天就要过年啦,要走亲访友啦!相信大家也是各种胡吃海喝后,啊咧~腰上好像多了好几圈o(>﹏<)o为了让小伙伴们及时制定年后行程(减膘)计划,活动家特此奉上2017年 ...
- codevs3027线段覆盖2(DP)题解
题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段 ...
- Ubuntu下安装python相关数据处理
01. Ubuntu下安装ipython sudo apt-get install ipython 02. Ubuntu下安装pip $ sudo apt-get install python-pip ...
- ES 6 : 变量的解构赋值
1. 数组的解构赋值 [ 基本用法 ] 按照一定的模式从数组或者对象中取值,对变量进行赋值的过程称为解构. 以前,为变量赋值只能直接指定值: 而ES 6 允许写成下面这样: 上面的代码表示,可以从数组 ...
- JavaScript忍者秘籍——闭包
概要:本篇博客主要介绍了JavaScript的闭包 1.闭包的工作原理 简单地说,闭包就是一个函数在创建时允许该自身函数访问并操作该自身函数之外的变量时所创建的作用域. 例如: var outerVa ...
- android移动开发学习笔记(二)神奇的Web API
本次分两个大方向去讲解Web Api,1.如何实现Web Api?2.如何Android端如何调用Web Api?对于Web Api是什么?有什么优缺点?为什么用WebApi而不用Webservice ...