C简单实现动态顺序表
<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简单实现动态顺序表的更多相关文章
- 数据结构C语言版--动态顺序表的基本功能实现(二)
/* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...
- 老郭带你学数据结构(C语言系列)2-线性表之动态顺序表
一.基本概念: 线性表:由n个类型相同的数据元素组成的有限序列,记为(a1,a2,--an). 线性表的特征:其中的元素存在这序偶关系,元素之间存在着严格的次序关系. 顺序存储表:线性表中的元素依次存 ...
- C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现
前面介绍的模板有关知识大部分都是用顺序表来举例的,现在我们就专门用模板来实现顺序表,其中的很多操作都和之前没有多大区别,只是有几个比较重要的知识点需要做专门的详解. #pragma once #inc ...
- C++实现动态顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构.这样的存储方式使得线性表逻辑上相邻的元素,其在物理存储单元中也是相邻的.只要知道了第一个元素的存 ...
- 动态顺序表(C++实现)
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构. 这样的存储方式使得线性表逻辑上相邻的元素,其在物理存储单元中也是相邻的.只要知道了第一个元素的 ...
- 数据结构之动态顺序表(C实现)
线性表有2种,分为顺序表和链表. 顺序表: 采用顺序存储方式,在一组地址连续的存储空间上存储数据元素的线性表(长度固定) 链表: 有3种,单链表.双向链表.循环链表(长度不固定) seqList.h ...
- 利用SpEL 表达式实现简单的动态分表查询
这里的动态分表查询并不是动态构造sql语句,而是利用SpEL操作同一结构的不同张表. 也可以参考Spring Data Jpa中的章节http://docs.spring.io/spring-data ...
- C语言实现的顺序表
顺序表是用一段地址连续的存储单元依次存储数据元素的线性结构.顺序表可分为静态存储和动态存储,静态顺序表比较简单,数据空间固定,而动态顺序表可以动态增容,便于存放大量数据,现主要把动态的基本实现一下~此 ...
- 3、顺序表、内存、类型、python中的list
1.内存.类型本质.连续存储 1.内存本质 2.C 语言实例-计算 int, float, double 和 char 字节大小 使用 sizeof 操作符计算int, float, double 和 ...
随机推荐
- [USACO13NOV]没有找零No Change [TPLY]
[USACO13NOV]没有找零No Change 题目链接 https://www.luogu.org/problemnew/show/3092 做题背景 FJ不是一个合格的消费者,不知法懂法用法, ...
- 【CJOJ P1957】【NOIP2010冲刺十模拟赛】数字积木
[NOIP2010冲刺十模拟赛]数字积木 Description 小明有一款新式积木,每个积木上都有一个数,一天小明突发奇想,要是把所有的积木排成一排,所形成的数目最大是多少呢? 你的任务就是读入n个 ...
- [BZOJ1041] [HAOI2008] 圆上的整点 (数学)
Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...
- iOS开发--XMPPFramework--好友列表(五)
上一篇文章,我们讨论了调试和好友模块,这一篇,在引入了好友模块后,我们来说说好友列表的显示. 还记得在上一篇中,我们把自动拉去好友列表给关掉了,所以,我们选择在控制器的-(void)viewDidLo ...
- 论文笔记(3):STC: A Simple to Complex Framework for Weakly-supervised Semantic Segmentation
论文题目是STC,即Simple to Complex的一个框架,使用弱标签(image label)来解决密集估计(语义分割)问题. 2014年末以来,半监督的语义分割层出不穷,究其原因还是因为pi ...
- 如何直接在github上预览html网页效果
http://justcoding.iteye.com/blog/2321552 2.vue 配合vue-resource调用接口,获取数据 https://www.cnblogs.com/fei ...
- 11.python线程
基本概念 1.进程 定义: 进程就是一个程序在一个数据集上的一次动态执行过程. 组成: 进程一般由程序.数据集.进程控制块三部分组成. 程序: 我们编写的程序用来描述进程要完成哪些功能 ...
- 流式处理新秀Flink原理与实践
随着大数据技术在各行各业的广泛应用,要求能对海量数据进行实时处理的需求越来越多,同时数据处理的业务逻辑也越来越复杂,传统的批处理方式和早期的流式处理框架也越来越难以在延迟性.吞吐量.容错能力以及使用便 ...
- 项目中用到的node-express模块
反向代理中间件: var proxyMiddleWare = require("http-proxy-middleware"); var proxyPath = "htt ...
- javascript中函数的闭包自调用
话不多说, 直接上代码 // 定义一个变量outerParam, 然后使用一个闭包函数给该变量初始化var outerParam = (function testClosure(param) { // ...