<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. [USACO13NOV]没有找零No Change [TPLY]

    [USACO13NOV]没有找零No Change 题目链接 https://www.luogu.org/problemnew/show/3092 做题背景 FJ不是一个合格的消费者,不知法懂法用法, ...

  2. 【CJOJ P1957】【NOIP2010冲刺十模拟赛】数字积木

    [NOIP2010冲刺十模拟赛]数字积木 Description 小明有一款新式积木,每个积木上都有一个数,一天小明突发奇想,要是把所有的积木排成一排,所形成的数目最大是多少呢? 你的任务就是读入n个 ...

  3. [BZOJ1041] [HAOI2008] 圆上的整点 (数学)

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...

  4. iOS开发--XMPPFramework--好友列表(五)

    上一篇文章,我们讨论了调试和好友模块,这一篇,在引入了好友模块后,我们来说说好友列表的显示. 还记得在上一篇中,我们把自动拉去好友列表给关掉了,所以,我们选择在控制器的-(void)viewDidLo ...

  5. 论文笔记(3):STC: A Simple to Complex Framework for Weakly-supervised Semantic Segmentation

    论文题目是STC,即Simple to Complex的一个框架,使用弱标签(image label)来解决密集估计(语义分割)问题. 2014年末以来,半监督的语义分割层出不穷,究其原因还是因为pi ...

  6. 如何直接在github上预览html网页效果

    http://justcoding.iteye.com/blog/2321552 2.vue 配合vue-resource调用接口,获取数据   https://www.cnblogs.com/fei ...

  7. 11.python线程

    基本概念 1.进程       定义: 进程就是一个程序在一个数据集上的一次动态执行过程. 组成:  进程一般由程序.数据集.进程控制块三部分组成. 程序:  我们编写的程序用来描述进程要完成哪些功能 ...

  8. 流式处理新秀Flink原理与实践

    随着大数据技术在各行各业的广泛应用,要求能对海量数据进行实时处理的需求越来越多,同时数据处理的业务逻辑也越来越复杂,传统的批处理方式和早期的流式处理框架也越来越难以在延迟性.吞吐量.容错能力以及使用便 ...

  9. 项目中用到的node-express模块

    反向代理中间件: var proxyMiddleWare = require("http-proxy-middleware"); var proxyPath = "htt ...

  10. javascript中函数的闭包自调用

    话不多说, 直接上代码 // 定义一个变量outerParam, 然后使用一个闭包函数给该变量初始化var outerParam = (function testClosure(param) { // ...