<span style="font-size:18px;">一下为简单实现:</span>

#define SIZE 3;
typedef int DataType;
typedef struct SeqList
{
DataType *array;
size_t size; //数据实际长度
size_t capicity;//扩展后大小
}SeqList; //初始化顺序表
void InitSeqList(SeqList *pSeq)
{
pSeq->capicity = SIZE;
pSeq->array = (DataType*)malloc(sizeof(DataType)*pSeq->capicity);
if(NULL == pSeq->array)
{
printf("分配内存shi:\n");
return;
}
pSeq->size = 0;
} //尾插数据
void PushBack(SeqList *pSeq,DataType x)
{
assert(pSeq);
if(pSeq->size >= pSeq->capicity)//每次插入一个数据,
//size就加一 直到size大于初始容量 就扩容
{
DataType *newpSeq;
pSeq->capicity = (pSeq->capicity)*SIZE;
newpSeq = (DataType*)malloc(sizeof(DataType)*pSeq->capicity);
if(NULL == newpSeq)
{
printf("内存分配失败:\n");
return;
}
memcpy(newpSeq,pSeq->array,sizeof(DataType)*pSeq->size);
free(pSeq->array);
pSeq->array = newpSeq;
pSeq->array[pSeq->size] = x;
pSeq->size++;
}
else
{
pSeq->array[pSeq->size] = x;
pSeq->size++;
}
} //遍历顺序表
void TraverseList(SeqList *pSeq)
{
int i;
for(i = 0; i < pSeq->size; i++)
{
printf("%d\t",pSeq->array[i]);
}
printf("\n");
} //冒泡排序
void BubbleSort(SeqList *s)
{
int i, j, temp;
for(i = 0; i < s->size-1; i++)
{
for(j = 0;j < s->size-i-1; j++)
{
if(s->array[j]>s->array[j+1])
{
temp = s->array[j];
s->array[j] = s->array[j+1];
s->array[j+1] = temp;
}
}
}
} //选择排序
void SeclectSort(SeqList *pSeq)
{
int i, j, k; //设K为最小数的下标
for(i = 0; i < pSeq->size; i++)
{
DataType temp;
k = i;
for(j = i+1; j < pSeq->size; j++)
{
if(pSeq->array[j] < pSeq->array[k])
{
k = j;
}
}
temp = pSeq->array[i];
pSeq->array[i] = pSeq->array[k];
pSeq->array[k] = temp;
}
} //二分查找
int BinarySearch(SeqList *pSeq,DataType x)
{
int left = 0;
int right = pSeq->size; while(left < right)
{
int mid = left + (right - left)/2;
if(pSeq->array[mid] < x)
{
left = mid+1;
}
else if(pSeq->array[mid] > x)
{
right = mid;
}
else
{
return mid;
}
}
return -1;
}
//递归 二分查找
int BinarySearch_r(SeqList *pSeq,int left,int right,DataType x)
{
SeqList List;
assert(pSeq);
while(left < right)
{
int mid = left + (right - left)/2;
if(pSeq->array[mid] < x)
{
return BinarySearch_r(&List,mid+1,right,x);
}
else if(pSeq->array[mid] > x)
{
return BinarySearch_r(&List,left,mid,x);
}
else
{
return mid;
}
}
return -1;
}

C简单实现动态顺序表的更多相关文章

  1. 数据结构C语言版--动态顺序表的基本功能实现(二)

    /* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...

  2. 老郭带你学数据结构(C语言系列)2-线性表之动态顺序表

    一.基本概念: 线性表:由n个类型相同的数据元素组成的有限序列,记为(a1,a2,--an). 线性表的特征:其中的元素存在这序偶关系,元素之间存在着严格的次序关系. 顺序存储表:线性表中的元素依次存 ...

  3. C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现

    前面介绍的模板有关知识大部分都是用顺序表来举例的,现在我们就专门用模板来实现顺序表,其中的很多操作都和之前没有多大区别,只是有几个比较重要的知识点需要做专门的详解. #pragma once #inc ...

  4. C++实现动态顺序表

    顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构.这样的存储方式使得线性表逻辑上相邻的元素,其在物理存储单元中也是相邻的.只要知道了第一个元素的存 ...

  5. 动态顺序表(C++实现)

    顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构. 这样的存储方式使得线性表逻辑上相邻的元素,其在物理存储单元中也是相邻的.只要知道了第一个元素的 ...

  6. 数据结构之动态顺序表(C实现)

    线性表有2种,分为顺序表和链表. 顺序表: 采用顺序存储方式,在一组地址连续的存储空间上存储数据元素的线性表(长度固定) 链表: 有3种,单链表.双向链表.循环链表(长度不固定) seqList.h ...

  7. 利用SpEL 表达式实现简单的动态分表查询

    这里的动态分表查询并不是动态构造sql语句,而是利用SpEL操作同一结构的不同张表. 也可以参考Spring Data Jpa中的章节http://docs.spring.io/spring-data ...

  8. C语言实现的顺序表

    顺序表是用一段地址连续的存储单元依次存储数据元素的线性结构.顺序表可分为静态存储和动态存储,静态顺序表比较简单,数据空间固定,而动态顺序表可以动态增容,便于存放大量数据,现主要把动态的基本实现一下~此 ...

  9. 3、顺序表、内存、类型、python中的list

    1.内存.类型本质.连续存储 1.内存本质 2.C 语言实例-计算 int, float, double 和 char 字节大小 使用 sizeof 操作符计算int, float, double 和 ...

随机推荐

  1. 【Luogu3444】ORK-Ploughing(贪心)

    [Luogu3444]ORK-Ploughing(贪心) 题面 Luogu 题解 我们知道,如果我们选定了以横向为主,或者纵向为主, 那么就有尽可能减少另一个方向上耕地的次数 所以分开贪心,但是本质相 ...

  2. React-Native安装使用

    先附上React-Native官方文档中文版:http://wiki.jikexueyuan.com/project/react-native/getting-started.html 好,接下来我们 ...

  3. 配置linux软件下载跟新地址

    /etc/yum.repos.d/CentOS-Base.repo 直接到mirrors.aliyum.com下载 diff:比较

  4. hadoop第二课

    1.1为什么需要Hadoop  (1)数据分析者面临的问题 – 数据日趋庞大,读写都出现性能瓶颈: – 用户的应用和分析结果,对实时性和响应时间 要求越来越高: – 使用的模型越来越复杂,计算量指数级 ...

  5. HttpSessionActivationListener序列化与反序列化

    一.序列化与反序列化 1.什么是序列化 把对象转化位字节序列的过程称为序列化(保存到硬盘,持久化) 把字节序列转化位对象的过程称为反序列化(存放于内存) 2.序列化的用途 把对象的字节序列永久保存到硬 ...

  6. Windows下Python环境的搭建

    我刚开始接触Python没多久,当然这也是为初学者来更好的去入门Python,我电脑上既跑着Windows也跑着Red Hat的Linux,相比较而言,开发我还是更青睐于Linux系统,很多开发工具红 ...

  7. 怎么解决VMware“该虚拟机似乎正在使用中”问题

    问题如下:

  8. 关于Eclipse中Ctrl+Alt+Down和Ctrl+Alt+Up不起作用的解决方法

    1.其它软件热键冲突,把其它软件的热键修改为其它按键,或者删掉热键 2.Intel显卡快捷键问题 1).你虽然禁用Intel快捷键,但是Intel快捷键仍然是Ctrl+alt+down,还是存在冲突, ...

  9. 设计模式——备忘录模式(C++实现)

    #include <iostream> #include <string> #include <vector> using namespace std; class ...

  10. Opencv读取并获取视频属性

    opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头.常用的操作如下: 1.常用构造函数 1.VideoCapture类的构造函数:C++: VideoCapture::Vid ...