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

去哪找网站建设公司简约的网页设计欣赏

去哪找网站建设公司,简约的网页设计欣赏,洛阳网站建设内容,如何做企业网站规划目录 一.介绍顺序表二.实现顺序表1.创建多文件2.顺序表的存储方式3.函数的声明4.初始化顺序表5.清理顺序表6.打印顺序表7.扩容8.尾插8.尾删9.头插10.头删11.查找12.修改13.在pos位置插入13.在pos位置删除 三.全部代码1.SeqList.h2.SeqList.c3.Test.c 一.介绍顺序表 顺序表是用… 目录 一.介绍顺序表二.实现顺序表1.创建多文件2.顺序表的存储方式3.函数的声明4.初始化顺序表5.清理顺序表6.打印顺序表7.扩容8.尾插8.尾删9.头插10.头删11.查找12.修改13.在pos位置插入13.在pos位置删除 三.全部代码1.SeqList.h2.SeqList.c3.Test.c 一.介绍顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构一般情况下采用数组存储。 顺序表与通讯录类似可以完成增删查改等功能。在此基础上还可以实现头插、头删、尾插、尾删以及某位置的插入和删除 二.实现顺序表 1.创建多文件 用多文件的好处在通讯录一文中已经说明过了所以这里直接进入正题 SeqList.h——函数和类型的声明 SeqList.c——函数的实现 Test.c——测试顺序表 注为了方便测试所以没有Test.c没有菜单直接进行测试 2.顺序表的存储方式 顺序表可以采用两种存储方式静态存储和动态存储 本文使用的是动态存储因为静态存储只适用于确定知道需要存多少数据的场景空间开多了浪费开少了不够用。现实中基本都是使用动态顺序表根据需要动态的分配空间大小。 typedef int SLDataType;//重定义方便类型的修改 typedef struct SeqList {SLDataType* a;//指向动态开辟的数组int size;//数据的个数int capacity;//容量的大小 }SL;3.函数的声明 该顺序表要实现的函数有 1.初始化顺序表 2.清理顺序表 3.打印顺序表 4.扩容 5.尾插 6.尾删 7.头插 8.头删 9.查找 10.修改 11.在pos位置插入 12.在pos位置删除 //初始化 void SLInit(SL* ps); //清理 void SLDestroy(SL* ps); //打印 void SLPrint(SL* ps); //扩容 void SLCapacity(SL* ps); //尾插 void SLPushBack(SL* ps, SLDataType x); //尾删 void SLPopBack(SL* ps); //头插 void SLPushFront(SL* ps, SLDataType x); //头删 void SLPopFront(SL* ps); //查找 void SLFind(SL* ps, SLDataType x); //修改 void SLModify(SL* ps, int pos, SLDataType x); //在pos位置插入 void SLInsert(SL* ps, int pos, SLDataType x); //在pos位置删除 void SLErase(SL* ps, int pos);4.初始化顺序表 刚开始要对传过来的指针进行断言防止为空后面的也是 使用malloc函数为数组开辟一块空间容量大小自己定数据个数初始化为0 void SLInit(SL* ps) {assert(ps);ps-a (SLDataType*)malloc(sizeof(SLDataType) * 4);if (ps-a NULL){perror(malloc fail);exit(-1);}ps-size 0;ps-capacity 4; }5.清理顺序表 程序结束前要对内存进行清理因为使用了动态开辟函数所以必须对使用的空间进行释放防止内存泄漏 void SLDestroy(SL* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity 0;ps-size 0; }6.打印顺序表 因为顺序表是连续的空间所以打印顺序表的数据用for循环遍历出来就可以了 void SLPrint(SL* ps) {assert(ps);int i 0;for (i 0; i ps-size; i){printf(%d , ps-a[i]);}printf(\n); }7.扩容 当顺序表的数据满了等于刚开始开辟的空间大小就要进行扩容。使用realloc函数可以对容量进行修改。 void SLCapacity(SL* ps) {assert(ps);if (ps-size ps-capacity){SLDataType* ptr (SLDataType*)realloc(ps-a, 2 * ps-capacity * sizeof(SLDataType));if (ptr NULL){perror(realloc fail);exit(-1);}else{ps-a ptr;ps-capacity * 2;}} }8.尾插 进入尾插这个函数首先要对检查容量是否已满满了就扩容。 size是数据个数数组a[ps-size]是下一个数据的下标尾插一个数把这个数赋给a[ps-size]就行了然后size void SLPushBack(SL* ps, SLDataType x) {assert(ps);SLCapacity(ps);ps-a[ps-size] x;ps-size; }8.尾删 将最后一个元素置为0然后size减1 注意当size为0时就不能再减了所以对size的范围要断言 void SLPopBack(SL* ps) {assert(ps);assert(ps-size 0);ps-a[ps-size - 1] 0;ps-size--; }9.头插 头插数据先要检查容量定义一个变量end指向的是最后一个元素的下一个位置然后利用while循环end的范围0把原来的首元素挪动才能头插将最后一个元素放进它的下个位置循环一次end减1依次将前一个元素置到后一个元素的地址去直到将首元素的位置变成空的状态然后头插size加1 void SLPushFront(SL* ps, SLDataType x) {assert(ps);SLCapacity(ps);int end ps-size;while (end 0){ps-a[end] ps-a[end - 1];end--;}ps-a[0] x;ps-size; }10.头删 定义一个变量begin等于0指向首元素。用while循环将后一个元素覆盖前一个元素每次循环begin加1直到最后一个元素向前覆盖完就结束为头的元素就删除了然后size减1 注意当size为0时就不能再减了所以对size的范围要断言 void SLPopFront(SL* ps) {assert(ps);assert(ps-size 0);int begin 0;while (begin ps-size){ps-a[begin] ps-a[begin 1];begin;}ps-size--; }11.查找 用for循环遍历顺序表有与x相同的数就找到了否则没找到 void SLFind(SL* ps, SLDataType x) {assert(ps);int i 0;for (i 0; i ps-size; i){if (ps-a[i] x){printf(找到了\n);return;}}printf(没找到\n); }12.修改 pos的值经过断言如果是在范围内就直接将pos位置的值修改为x否则报错 void SLModify(SL* ps, int pos, SLDataType x) {assert(ps);assert(pos 0 pos ps-size);ps-a[pos] x; }13.在pos位置插入 首先对pos的值进行断言确定其是否在范围内。插入数值要考虑容量是否已满所以要检查容量。接下来与头插类似把pos位置的数据和后面的数据往后挪动然后在pos位置插入xsize加1 void SLInsert(SL* ps, int pos, SLDataType x) {assert(ps);assert(pos 0 pos ps-size);SLCapacity(ps);int end ps-size;while (end pos){ps-a[end] ps-a[end - 1];end--;}ps-a[pos] x;ps-size; }13.在pos位置删除 与头删类似直到最后一个元素向前覆盖完就结束 void SLErase(SL* ps, int pos) {assert(ps);assert(pos 0 pos ps-size);int begin pos;while (begin ps-size){ps-a[begin] ps-a[begin 1];begin;}ps-size--; }三.全部代码 1.SeqList.h #pragma once #include stdio.h #include stdlib.h #include assert.h typedef int SLDataType;//重定义方便类型的修改 typedef struct SeqList {SLDataType* a;//指向动态开辟的数组int size;//数据的个数int capacity;//容量的大小 }SL; //初始化 void SLInit(SL* ps); //清理 void SLDestroy(SL* ps); //打印 void SLPrint(SL* ps); //扩容 void SLCapacity(SL* ps); //尾插 void SLPushBack(SL* ps, SLDataType x); //尾删 void SLPopBack(SL* ps); //头插 void SLPushFront(SL* ps, SLDataType x); //头删 void SLPopFront(SL* ps); //查找 void SLFind(SL* ps, SLDataType x); //修改 void SLModify(SL* ps, int pos, SLDataType x); //在pos位置插入 void SLInsert(SL* ps, int pos, SLDataType x); //在pos位置删除 void SLErase(SL* ps, int pos);2.SeqList.c #include SeqList.h //初始化 void SLInit(SL* ps) {assert(ps);ps-a (SLDataType*)malloc(sizeof(SLDataType) * 4);if (ps-a NULL){perror(malloc fail);exit(-1);}ps-size 0;ps-capacity 4; } //清理 void SLDestroy(SL* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity 0;ps-size 0; } //打印 void SLPrint(SL* ps) {assert(ps);int i 0;for (i 0; i ps-size; i){printf(%d , ps-a[i]);}printf(\n); } //扩容 void SLCapacity(SL* ps) {assert(ps);if (ps-size ps-capacity){SLDataType* ptr (SLDataType*)realloc(ps-a, 2 * ps-capacity * sizeof(SLDataType));if (ptr NULL){perror(realloc fail);exit(-1);}else{ps-a ptr;ps-capacity * 2;}} } //尾插 void SLPushBack(SL* ps, SLDataType x) {assert(ps);SLCapacity(ps);ps-a[ps-size] x;ps-size; } //尾删 void SLPopBack(SL* ps) {assert(ps);assert(ps-size 0);ps-a[ps-size - 1] 0;ps-size--; } //头插 void SLPushFront(SL* ps, SLDataType x) {assert(ps);SLCapacity(ps);int end ps-size;while (end 0){ps-a[end] ps-a[end - 1];end--;}ps-a[0] x;ps-size; } //头删 void SLPopFront(SL* ps) {assert(ps);assert(ps-size 0);int begin 0;while (begin ps-size){ps-a[begin] ps-a[begin 1];begin;}ps-size--; } //查找 void SLFind(SL* ps, SLDataType x) {assert(ps);int i 0;for (i 0; i ps-size; i){if (ps-a[i] x){printf(找到了\n);return;}}printf(没找到\n); } //修改 void SLModify(SL* ps, int pos, SLDataType x) {assert(ps);assert(pos 0 pos ps-size);ps-a[pos] x; } //在pos位置插入 void SLInsert(SL* ps, int pos, SLDataType x) {assert(ps);assert(pos 0 pos ps-size);SLCapacity(ps);int end ps-size;while (end pos){ps-a[end] ps-a[end - 1];end--;}ps-a[pos] x;ps-size; } //在pos位置删除 void SLErase(SL* ps, int pos) {assert(ps);assert(pos 0 pos ps-size);int begin pos;while (begin ps-size){ps-a[begin] ps-a[begin 1];begin;}ps-size--; }3.Test.c #include SeqList.h void test() {SL s1;SLInit(s1);//初始化SLPushBack(s1, 1);SLPushBack(s1, 2);SLPushBack(s1, 3);SLPushBack(s1, 4);SLPushBack(s1, 5);//测试尾插SLPrint(s1);SLPopBack(s1);SLPopBack(s1);//测试尾删SLPrint(s1);SLPushFront(s1, 10);SLPushFront(s1, 20);SLPushFront(s1, 30);SLPushFront(s1, 40);//测试头插SLPrint(s1);SLPopFront(s1);SLPopFront(s1);//测试头删SLPrint(s1);SLFind(s1, 100);//测试查找SLModify(s1, 2, 99);//测试修改SLPrint(s1);SLInsert(s1, 3, 77);//测试pos位置插入SLPrint(s1);SLErase(s1, 1);//测试pos位置删除SLPrint(s1);SLDestroy(s1);} int main() {test();return 0; }~ ~ 感谢观看
http://www.dnsts.com.cn/news/78816.html

相关文章:

  • html 网站新功能介绍网站flash音乐播放器
  • 四川淘宝网站建设方案wordpress仪表盘访问不了
  • 如何利用微信进行企业网站推广查收录网站
  • 个人做跨境电商网站有哪些商城的网站统计如何做
  • 建设网站需要准备什么员工微信管理系统
  • 关于网站建设的教材网站 产品图片 尺寸
  • 做网站为什么没收入河南零距离文化传播 网站建设
  • 中国设计网址导航网络seo招聘
  • 服务器做视频网站吗代理公司招标流程
  • 那些做刷客的网站海尔网站建设策划书
  • 珠海十大网站建设公司制作企业网站作业
  • 公司网站开发交接注意事项重庆设计集团有限公司
  • 做招聘信息的网站wordpress手机适配模板中文
  • 新公司在哪做网站企业公司信息网
  • 文章类网站源码网易企业邮箱密码格式
  • 网站维护服务基本内容石家庄建站平台
  • 重庆有效的网站推广四川高速建设公司网站
  • 广西建设工程质检安全网站大连线上教学
  • 如何做网站 百度经验网站横幅怎么更换
  • 就业服务网站建设方案qq群怎么推广
  • php网站编程邮箱域名
  • 网站设计公司请示在招聘网站做销售怎么样
  • vs网站模板网上怎么做宣传啊
  • 全国网站建设大赛网站建设费走什么费用
  • 如何建网站老鱼网seo优化软件
  • 有哪几个网站可以做贸易html5自适应网站模版
  • 厦门市建设工程在哪备案网站湛江网站建设服务
  • 哈尔滨自主建站模板东营企业自助建站
  • 网优 是什么网站网站代码的重点内容是什么
  • 临沂品牌网站建设公司网站多个页面要加引导