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

模板网站可以做webappseo公司系统

模板网站可以做webapp,seo公司系统,做视频网站犯法么,网站开发语言啥意思本篇文章是数据结构的开篇,所以我们先来了解一下什么是数据结构。 什么是数据结构 数据结构是由“数据”和“结构”两个词组合而来,自然要以两个词分别去阐述。 首先,什么是数据?数据(data)是事实或观察的结果,是对客…

        本篇文章是数据结构的开篇,所以我们先来了解一下什么是数据结构。

什么是数据结构

        数据结构是由“数据”和“结构”两个词组合而来,自然要以两个词分别去阐述。

        首先,什么是数据?数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。 数据可以是连续的值,比如声音、图像,称为模拟数据;也可以是离散的,如符号、文字,称为数字数据。 在计算机系统中,数据以二进制信息单元0、1的形式表示。

        什么是结构?当我们想要使用大量同一类型数据的时候,通过手动定义大量的独立的变量对程序来说可读性非常差,我们可以借助数组这样的数据结构将大量的数据组织在一起,结构也可以理解为组织数据的方式。这样的结构可以大大提高我们寻找数据的效率。

        由此我们引出数据结构的概念:数据结构是计算机储存、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构反应的是数据的内部构成,即数据由哪一部分构成,以什么方式构成,以及数据元素之间呈现的结构。

总结:
1)能够存储数据(如顺序表、链表等结构)
2)存储的数据能够⽅便查找

为什么需要数据结构

        在如今时代化的商业餐饮总是人山人海,不借助排队的方式来管理客户,会导致客户的就餐感受差、等餐时间长、餐厅营业混乱等情况。同理,程序中如果不对数据进行管理,可能导致数据丢失、操作数据困难、野指针等情况。通过数据结构,我们能够有效地将数据组织和管理在一起。按照我们的方式任意地对数据进行增删查改等操作。

        我们之前在C语言中讲到的数组就是最基础的数据结构,尽管有了数组,但是最基础的数据结构已经不能完全满足复杂算法的实现,因此慢慢发展出了数据结构。

        示例:假定数组有10个空间,已经使⽤了5个,向数组中插⼊数据步骤:求数组的⻓度,求数组的有效数据个数,向下标为数据有效个数的位置插⼊数据(注意:这⾥是否要判断数组是否满了,满了还能继续插⼊吗).....假设数据量⾮常庞⼤,频繁的获取数组有效数据个数会影响程序执⾏效率。

线性表的概念及结构

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

注意:本章只讲顺序表,后续会继续讲解其他线性结构。

顺序表

        顺序表的底层结构其实就是数组,是通过对数组的封装,实现了常⽤的增删改查等接⼝。

        顺序表分为静态顺序表和动态顺序表,两者的区别在于它们的空间容量是否固定。静态顺序表使用的是定长数组储存元素,动态顺序表则是通过动态内存管理的方式对空间容量进行按需申请,因为静态顺序表存在致命缺陷(空间给少了不够用,给多了又造成空间浪费),因此我们通常使用动态顺序表。

下面我将附上函数声明和函数实现代码,测试代码请各位按自己喜好自主补充:

        注意:typedef int sqDataType的意义是方便后期更换类型时快速便捷,并且不会影响到其他无关的相同类型。

sqlist.h#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>typedef int sqDataType;
//定义结构体
typedef struct SQlist 
{sqDataType* arr;int size;int capacity;
}SQL;//初始化声明
void InitSQL(SQL* s);
//动态开辟内存声明
void Dyopen(SQL* s);
//动态扩容
void check_Dyexpand(SQL* s);
//打印函数
void SQLprint(SQL* s);
//头插函数声明
void HeadInsert(SQL* s, sqDataType num);
//尾插函数声明
void TailInsert(SQL* s, sqDataType num);
//任意位置插入的函数声明
void SQLinsert(SQL* s, int pos, sqDataType num);//头删函数声明
void HeadDelete(SQL* s);
//尾删函数声明
void TailDelete(SQL* s);
//任意位置删除的函数声明
void SQLdelete(SQL* s, int pos, sqDataType num);//查找函数声明
int SQLsearch(SQL* s, sqDataType num);
//修改函数声明
void SQLedit(SQL* s,int pos,sqDataType num);//顺序表销毁函数
void SQLdestroy(SQL* s);
sqlist.c#include "sqlist.h"//初始化
void InitSQL(SQL* s)
{s->arr = NULL;s->capacity = s->size = 0;printf("初始化完成\n");
}//动态开辟内存
void Dyopen(SQL* s)
{assert(s);sqDataType* ps = (sqDataType*)malloc(sizeof(sqDataType) * 1);if (ps == NULL){perror("malloc");return 1;}s->arr = ps;s->capacity = 1;printf("开辟成功\n");
}//动态扩容判断函数
void check_Dyexpand(SQL* s)
{assert(s);if (s->size == s->capacity){int newcapacity = (s->capacity == 0) ? 1 : (2 * s->capacity);sqDataType* ps = (sqDataType*)realloc(s->arr, sizeof(sqDataType) * newcapacity);s->capacity = newcapacity;printf("扩容成功\n");}else{printf("本次无需扩容\n");}
}//顺序表打印函数
void SQLprint(SQL* s)
{assert(s);for (int i = 0; i < s->size; i++){printf("%d ", s->arr[i]);}
}//头插函数
void HeadInsert(SQL *s,sqDataType num)
{assert(s);check_Dyexpand(&s);for (int i = s->size; i > 0; i--){s->arr[s->size] = s->arr[s->size - 1];}s->arr[0] = num;++(s->size);
}//尾插函数
void TailInsert(SQL* s,sqDataType num)
{assert(s);check_Dyexpand(&s);s->arr[s->size++] = num;
}//任意位置插入的函数
void SQLinsert(SQL* s, int pos, sqDataType num)
{assert(s);assert(pos >= 0 && pos <= s->size);check_Dyexpand(&s);for (int i = s->size - 1; i >= pos; i--){s->arr[i + 1] = s->arr[i];}s->arr[pos] = num;s->size++;printf("插入成功\n");
}//头删函数
void HeadDelete(SQL* s)
{assert(s);assert(s->size);if (s->size > 0){int i = 0;for (i = 1; i < s->size; i++){s->arr[i - 1] = s->arr[i];}--(s->size);printf("删除成功\n");}else{printf("顺序表为空,删除失败");return 1;}}//尾删函数
void TailDelete(SQL* s)
{assert(s);assert(s->size);if (s->size > 0){s->size--;printf("删除成功\n");}else{printf("顺序表为空,删除失败");return 1;}
}//任意位置删除的函数
void SQLdelete(SQL* s, int pos, sqDataType num)
{assert(s);assert(pos >= 0 && pos < s->size);//访问s->size位置是越界的check_Dyexpand(&s);for (int i = pos-1; i < s->size - 1; i++){s->arr[i] = s->arr[i + 1];}s->size--;printf("删除成功\n");
}//查找函数
int SQLsearch(SQL* s, sqDataType num)
{assert(s);for (int i = 0; i < s->size; i++){if (s->arr[i] == num){return i;}else{return -1;}}
}//修改函数
void SQLedit(SQL* s, int pos, sqDataType num)
{assert(s);assert(pos >= 0 && pos < s->size);s->arr[pos - 1] = num;printf("修改成功\n");
}//顺序表销毁函数
void SQLdestroy(SQL* s)
{if (s->arr != NULL){free(s->arr);s->arr = NULL;}s->capacity = s->size = 0;printf("销毁成功\n");
}

http://www.tj-hxxt.cn/news/100726.html

相关文章:

  • 视频播放网站怎么做山西疫情最新情况
  • 阿里巴巴网站建设代理链接优化方法
  • 专门做验收报告的网站软文案例
  • 途牛企业网站建设手机端怎么刷排名
  • 服务型政府网站建设直通车关键词怎么选 选几个
  • 甘肃省专业做网站乔拓云智能建站官网
  • asp.net旅游网站开发文档厦门百度竞价
  • 个人网站备注模板广东网站营销seo方案
  • 公司的网站怎么做媒体软文发稿
  • 先备案还是先做网站互联网推广员是做什么
  • 做淘宝图标网站山西seo排名
  • 深圳做响应式网站公司资源链接搜索引擎
  • 响应式网站 外贸北京seo助理
  • 企业做淘宝客网站有哪些免费刷赞网站推广免费
  • 做维修电器网站中国国家培训网是真的吗
  • 做电商网站费用搭建网站
  • 福田做网站公司简易的旅游网页制作
  • 企石镇网站建设seo排名方案
  • wordpress静态链接网站建设推广优化
  • 北京市住房与建设厅官方网站百度联盟怎么赚钱
  • 做网站联盟seo入门培训教程
  • 重庆网站网页设计培训机构山东做网站公司
  • 在网站上投放广告口碑营销的产品有哪些
  • 网站开发学习教程网络营销seo是什么意思
  • 沈阳微信网站开发免费独立站自建站网站
  • 关于网站建设实验报告免费b站推广
  • 企业网站建设能开广告服务费吗2023新冠结束了吗
  • 凡科建站官网网站模板互联网seo是什么意思
  • wordpress和ueeshop百度seo排名优化公司
  • 重庆市建设工程信息网官网公示seo是搜索引擎优化吗