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

投教网站建设网站建设原则五大原则

投教网站建设,网站建设原则五大原则,app用什么开发软件好,运动服装商城网站建设前言:还记得前面的文章:《通讯录的实现》吗?通讯录的完成就借助了顺序表这种数据结构!!!那么今天我们就来介绍我们的顺序表介绍顺序表前,我们来了解一下线性表的概念线性表:线性表&a…

前言:

还记得前面的文章:《通讯录的实现》吗?

通讯录的完成就借助了顺序表这种数据结构!!!

那么今天我们就来介绍我们的顺序表

介绍顺序表前,我们来了解一下线性表的概念

线性表:

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

顺序表:

什么是顺序表:

  • 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组
    上完成数据的增删查改。

  • 顺序表:可动态增长的数组,要求数据是连续存储的

顺序表的分类:

一、静态顺序表:

typedef int SLDataType;typedef struct SeqList
{SLDataType array[N];  //定长数组size_t size;          //有效数据个数
}SeqList;

由上述代码:我们可以很清楚的看出,这个顺序表使用定长数组进行存储数据。

我们也很容易发现这个静态的顺序表有一个十分大的缺陷:

数组的大小不确定,如果你的N给小了,那么就会不够用,如果你的N给大了,又会造成浪费

所以我们如果使用顺序表就应该使用动态的顺序表:

二、动态顺序表:

typedef int SLDataType; //类型重命名,后续要存储其它类型时方便更改typedef struct SeqList
{SLDataType* SLD;    //指向动态开辟的数组size_t size;      //有效数据个数size_t capacity;  //容量大小
}SeqList;

动态顺序表的实现:

  1. 初始化顺序表
void SeqListInit(SeqList* psl)
{assert(psl);psl->SLD = NULL;  psl->size = 0;  psl->capacity = 0;  
}
  1. 销毁顺序表
void SeqListDestory(SeqList* psl)
{assert(psl != NULL);  free(psl->SLD);   psl->SLD = NULL;  psl->size = 0;  psl->capacity = 0;  
}
  1. 检查顺序表容量是否满了,好进行增容
void CheckCapacity(SeqList* psl)
{assert(psl != NULL);  if (psl->size == psl->capacity)  {size_t newcapacity; if (psl->capacity == 0)newcapacity = psl->capacity = 4;  elsenewcapacity = 2 * psl->capacity;  SLDataType* p = (SLDataType*)realloc(psl->SLD, newcapacity * sizeof(SLDataType));  if (p == NULL){perror("realloc");exit(-1);}psl->SLD = p; psl->capacity = newcapacity;  }
}
  1. 顺序表尾插
void SeqListPushBack(SeqList* psl, SLDataType x)
{assert(psl != NULL);  CheckCapacity(psl); psl->SLD[psl->size] = x; psl->size++;  
}
  1. 顺序表尾删
void SeqListPopBack(SeqList* psl)
{assert(psl != NULL);  assert(psl->size > 0);  psl->size--;  }
  1. 顺序表头插
void SeqListPushFront(SeqList* psl, SLDataType x)
{assert(psl);  CheckCapacity(psl);  int i = 0;for (i = psl->size - 1; i >= 0; i--)  {psl->SLD[i + 1] = psl->SLD[i];}psl->SLD[0] = x;  psl->size++;  }
  1. 顺序表头删
void SeqListPopFront(SeqList* psl)
{assert(psl); assert(psl->size > 0);  int i = 0;for (i = 1; i < psl->size; i++)  {psl->SLD[i - 1] = psl->SLD[i];}psl->size--; 
}
  1. 打印顺序表
void SeqListPrint(const SeqList* psl)
{assert(psl != NULL);  if (psl->size == 0)  {printf("顺序表为空\n");return;}int i = 0;for (i = 0; i < psl->size; i++)  {printf("%d ", psl->SLD[i]);}printf("\n");
}
  1. 在顺序表中查找指定值
int SeqListFind(const SeqList* psl, SLDataType x)
{assert(psl); int i = 0;for (i = 0; i < psl->size; i++){if (psl->SLD[i] == x){return i;  }}return -1;  
}
  1. 在顺序表指定下标位置插入数据
void SeqListInsert(SeqList* psl, size_t pos, SLDataType x)
{assert(psl);  assert(pos >= 0 && pos <= psl->size);  CheckCapacity(psl);  size_t i = 0;for (i = psl->size; i > pos; i--)  {psl->SLD[i] = psl->SLD[i - 1];}psl->SLD[pos] = x;  psl->size++;  
}
  1. 在顺序表中删除指定下标位置的数据
void SeqListErase(SeqList* psl, size_t pos)
{assert(psl);  assert(psl->size > 0);  assert(pos >= 0 && pos < psl->size);  size_t i = 0;for (i = pos + 1; i < psl->size; i++)  {psl->SLD[i - 1] = psl->SLD[i];}psl->size--;  
}
  1. 查看顺序表中数据个数
size_t SeqListSize(const SeqList* psl)
{assert(psl);  return psl->size;
}
  1. 修改指定下标位置的数据
void SeqListAt(SeqList* psl, size_t pos, SLDataType x)
{assert(psl);  assert(psl->size > 0);  assert(pos >= 0 && pos < psl->size);  psl->SLD[pos] = x;  
}

http://www.yayakq.cn/news/62774/

相关文章:

  • 网站的百度百科怎么做成都网站设计哪家比较好
  • 新吴区建设局网站东莞找工作求职招聘
  • 手机网站单页xcache wordpress
  • 哪些网站是动态的本地建站软件
  • 网站建设找王科杰信誉网站建设通路
  • 专业定制网站普通话
  • 制作七星网站20亿做网站
  • 国外平面设计师网站做自媒体的网站有哪些
  • 邯郸网站建设市场衡水专业做网站
  • 网站无障碍的建设方面空缺学校网站建设评估
  • 个人博客网站华为网络工程师认证
  • 网站建设 成本企业服务局
  • 新吴区住房和城乡建设部网站莲花网站建设
  • 做网站好看的背景图片手机网站优化怎么做
  • Vs做的网站调试时如何适应网页网站备案好
  • html做成网页自己有网站怎么做优化
  • 互联网网站 数据库dz采集wordpress
  • 建网站盈利的几种方式网站建设项目实训报告
  • 在小型网站建设小组中的基本网站流程图设计
  • 网站 mvc 设计深色调网站
  • wap网站制作怎么做怎么制作网站准考证在网上打印
  • 教育培训网站建设做网站开发的提成多少钱
  • 一个空间安装多个织梦网站系统网络营销策划活动方案
  • 回忆网站怎么做网站建设与制作布局
  • 嘉兴网站建设公司就找嘉乐网络seo怎么读
  • 滕州 网站 建设江西省城乡建设陪训网官方网站
  • 免费奖励的网站有哪些四川做网站价格
  • 新乡企业网站排名优化交友高端网站建设
  • 山东有实力的网站开发多少钱wordpress本地评论插件
  • 怎么做淘宝客网站推广网站建设学校培训班