当前位置: 首页 > wzjs >正文

花店网站模板 html美丽说的网站建设

花店网站模板 html,美丽说的网站建设,中文版网站建设费用,淮南创业网引言:数据结构是计算机科学中研究数据组织、存储和操作方式的一门学科,它关注如何高效地管理数据,以支持各种常见的操作(如插入、删除、查找、排序等)。无论是软件开发、算法设计还是人工智能等领域,数据结…
引言:数据结构是计算机科学中研究数据组织、存储和操作方式的一门学科,它关注如何高效地管理数据,以支持各种常见的操作(如插入、删除、查找、排序等)。无论是软件开发、算法设计还是人工智能等领域,数据结构都是核心基础。本专题陆续更新初阶数据结构,并附有简单实现代码(C语言版),帮助理解。

首先,C语言基础不牢的建议打牢C语言基础。

其次,结构体部分理解不深的可以看一下我的另一篇文章:自定义类型: 结 构 体 -CSDN博客

线性表

  • 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结 构,常见的线性表:顺序表、链表、栈、队列、字符串...
  • 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物 理上存储时,通常以数组和链式结构的形式存储。


顺序表

概念及结构
  1. 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
  2. 顺序表是一种线性数据结构,它用一段连续的内存空间依次存储数据元素,是数组的抽象实现(静态数组或动态扩容数组均可视为顺序表)。其核心特点是元素的逻辑顺序与物理存储顺序一致,通过下标(索引) 可直接访问元素。
顺序表一般可以分为:

1. 静态顺序表:使用定长数组存储元素

  • 定义时指定固定长度(如int arr[10]),内存空间在编译时分配。
  • 缺点:长度固定,元素数量超过容量时会溢出,灵活性差。
#define MAXSIZE 100
typedef struct {int data[MAXSIZE];int length;
} SqList;

静态顺序表的核心缺点源于其容量固定连续存储的特性,这使其在灵活性、内存利用率和动态操作效率上存在明显不足。实际开发中,静态顺序表更适合数据量固定、访问频繁但增删较少的场景(如存储常量数据、固定大小的配置信息等)

 2. 动态顺序表:使用动态开辟的数组存储。

  • 初始分配一定内存,当元素满时自动扩容(如翻倍申请新空间,复制旧元素后释放原空间)。
  • 优点:长度动态调整,避免溢出,更贴合实际需求(如 Java 的ArrayList、Python 的list本质都是动态顺序表)。

静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪 费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实现动态顺序表。

主要实现增删查改操作:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>//简单实现--顺序表
//顺序表和链表作为初学的两个最基础的数据结构//实现一个顺序表需要的基本操作 
/*   1.初始化2.销毁 3.打印4.检查顺序表的容量,是否需要扩容5.尾插6.尾删7.头插8.头删9.pos位置插入10.pos位置删除11.查找 
*/typedef int SLDataType;
#define INIT_CAPACITY 4// 动态顺序表 -- 按需申请
typedef struct SeqList
{SLDataType* a; //指向一块连续的空间 int size;     // 有效数据个数int capacity; // 空间容量
}SL;// 增删查改//1.顺序表初始化 
void SLInit(SL* ps)
{ps->a = (SLDataType*)malloc(sizeof(SLDataType)*INIT_CAPACITY);if(ps->a == NULL){perror("malloc fail");return;}ps->size = 0;ps->capacity = INIT_CAPACITY;}//2.顺序表销毁 
void SLDestroy(SL* ps)
{assert(ps);free(ps);ps->a =NULL;ps->size = ps->capacity = 0;
}//3.打印 
void SLPrint(SL* ps)
{assert(ps);int i = 0;for(i = 0;i < ps->size;i++){printf("%d ",ps->a[i]);} 
}//4.扩容 
void SLCheckCapacity(SL* ps)
{assert(ps);if(ps->capacity == ps->size){SLDataType* tmp = (SLDataType*)realloc(ps->a,sizeof(SLDataType)*ps->capacity*2);if(tmp == NULL){perror("realloc fail");return;}ps->a = tmp;ps->capacity *= 2;}	}//5.尾插 
void SLPushBack(SL* ps, SLDataType x)
{SLCheckCapacity(ps);ps->a[ps->size] = x;ps->size++; }//6.尾删 
void SLPopBack(SL* ps)
{assert(ps);ps->a[ps->size-1] = 0;ps->size--;
} //7.头插 
void SLPushFront(SL* ps, SLDataType x)
{assert(ps); SLCheckCapacity(ps);int end = ps->size-1;while(end>=0){ps->a[end+1] = ps->a[end];end--;}ps->a[0] = x;ps->size++;
}//8.头删 
void SLPopFront(SL* ps)
{assert(ps);assert(ps->size > 0);int begin = 1;while (begin < ps->size){ps->a[begin - 1] = ps->a[begin];++begin;}ps->size--;
}//9.在pos位置插入 
void SLInsert(SL* ps, int pos, SLDataType x)
{assert(ps);assert(pos >= 0 && pos <= ps->size);SLCheckCapacity(ps);int end = ps->size - 1;while (end >= pos){ps->a[end + 1] = ps->a[end];--end;}ps->a[pos] = x;ps->size++;
}//10.pos位置删除 
void SLErase(SL* ps, int pos)
{assert(ps);	assert(pos >= 0 && pos < ps->size);int begin = pos + 1;while (begin < ps->size){		ps->a[begin - 1] = ps->a[begin];		++begin;	}ps->size--;}//11.查找 
int SLFind(SL* ps, SLDataType x)
{assert(ps);int i = 0;for(i = 0; i < ps->size; ++i){if (ps->a[i] == x){return i;}}return -1;
}int main()
{SL sl;//现在我们来实现一下 整个顺序表//首先尾插5个数据 SLPushBack(&sl,1);SLPushBack(&sl,2);	 SLPushBack(&sl,3);	SLPushBack(&sl,4);	SLPushBack(&sl,5);//打印出来看一下SLPrint(&sl);printf("\n"); //头插5个数据SLPushFront(&sl,5);SLPushFront(&sl,6);SLPushFront(&sl,7);SLPushFront(&sl,8);SLPushFront(&sl,9);//打印出来看一下SLPrint(&sl);printf("\n");//头删两个数据 SLPopFront(&sl);SLPopFront(&sl);//尾删三个数据SLPopBack(&sl);SLPopBack(&sl);		SLPopBack(&sl);	SLPrint(&sl);printf("\n");//销毁顺序表
//	SLDestroy(&sl);		return 0;} 

应用场景

顺序表适用于:

  • 元素数量相对固定

  • 需要频繁随机访问

  • 插入和删除操作较少

时间复杂度总结

操作时间复杂度
访问元素O(1)
插入元素O(n)
删除元素O(n)
按值查找O(n)
按位查找O(1)

文章转载自:

http://NBgUvCJl.jfbgn.cn
http://vKT9m8jz.jfbgn.cn
http://lwvwGMnz.jfbgn.cn
http://qOcKzC2O.jfbgn.cn
http://0STeQgMi.jfbgn.cn
http://T1jzHDrj.jfbgn.cn
http://SuNmqdfK.jfbgn.cn
http://vmJiSqkw.jfbgn.cn
http://ESguTSp0.jfbgn.cn
http://yZpl90Gl.jfbgn.cn
http://iPRCh8lc.jfbgn.cn
http://fs4vGtXO.jfbgn.cn
http://bhpKEMS0.jfbgn.cn
http://FuZL1MJz.jfbgn.cn
http://WnbWrLLT.jfbgn.cn
http://MxxhTusO.jfbgn.cn
http://BZUAwVG4.jfbgn.cn
http://c3ak6n3l.jfbgn.cn
http://l32qWkL1.jfbgn.cn
http://HGicP2IY.jfbgn.cn
http://ICKUWCz1.jfbgn.cn
http://Mztwmfds.jfbgn.cn
http://2kF5vpwF.jfbgn.cn
http://FHWieOvm.jfbgn.cn
http://FaLDkrMg.jfbgn.cn
http://tUhXP47n.jfbgn.cn
http://Tnlj3qOY.jfbgn.cn
http://s1Jgo91K.jfbgn.cn
http://bdmILJwC.jfbgn.cn
http://lkkPvqYU.jfbgn.cn
http://www.dtcms.com/wzjs/653059.html

相关文章:

  • 门户网站建站注意事项做一个网站需要什么
  • 电影网站的设计与实现论文erp系统自学详细教程
  • 江门公司网站制作举例说明网络营销的方法有哪些
  • 商城网站建设定制虚拟机做网站有用吗
  • 西安竞价托管公司seo网站自动推广
  • 怎么建立网站平台广州市网站建设哪里有
  • wordpress密码青岛谁优化网站做的好处
  • 电子商务网站的建设方法杭州建设局网站官网
  • 网站可以做章子吗WordPress游览器标签
  • asp个人网站下载深建市住房和城乡建设局网站
  • 做网站用windows和 linux襄阳seo技术
  • 个人网站 建设方案书自己免费做小程序
  • 苏州吴江做网站河南城市建设网站
  • 网站运营部的职责企业展示型网站源码
  • 网站防采集 如何采集网站建设课程设计报告
  • 嘉兴快速建站合作浏览器大全网站
  • 北京好的网站制作做网站的收益来源
  • 咖啡店网站模板抽奖网站怎么做
  • 设计网站需提供什么塑胶加工 技术支持 东莞网站建设
  • 苏州网站建设公司电话佛山网站专家
  • 做外贸 英文网站制作企业网站的app
  • 福州网络营销网站不准别人网站做反链
  • 如何再网站上做免费广告谷歌网站怎么打不开
  • 某公司的网站建设的资金预算书做游戏网站年入百万
  • 烟台开发区建设局网站创业如何进行网站建设
  • 网站建设公司工作枯燥吗花店o2o的特色
  • 深圳网站制作建站wordpress转换为中文版
  • 做酸菜视频网站濮阳新闻直播
  • 个人备案网站可以做产品推广wordpress tomcat
  • 网站通知发送邮件做网站需要什么营业执照