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

金山手机网站建设/crm软件

金山手机网站建设,crm软件,b站 网站建设,南昌网站建设代理商1.线性表 线性表呈现出一条线性,用指针把一块一块的内存连接起来。 其余还有树型结构,哈希结构,图结构。 线性表分为: 顺序表链表栈队列字符串 1.2顺序表 顺序表就是数组,但在数组的基础上,从头开始存。…

1.线性表

线性表呈现出一条线性,用指针把一块一块的内存连接起来。
其余还有树型结构,哈希结构,图结构。
线性表分为:

  • 顺序表
  • 链表
  • 队列
  • 字符串

1.2顺序表

顺序表就是数组,但在数组的基础上,从头开始存。还要求数据连续存储,不能跳跃间隔。
本质:数组(分为静态和动态)
(顺序表要求连续存储,数据挨着存)

写相对正式的代码要规范。
宏或条件编译,防止头文件被重复包含。
不仅仅有数组,还要用size标识有多少数组
凡是多个数组,都用结构体
完善:

  1. 对顺序表初始化一下
  2. 尾插,头插
    .h放声明
    .cpp放定义
//建立一个头文件SeqList.h,用静态顺序表实现
#pragma once
#define N 1000
//宏的好处让静态的数据表随时转换
//静态顺序表结构
typedef int SLDataType;//想存什么类型就改中间的字母
//想让顺序表存储管理别的东西
//为了一个地方改其他地方都改,定义一个typedef
typedef struct SeqList//结构体typedef
{SLDataDype a[N];//最简单的应该有个数组(定义成静态)//不推荐在这里直接写数字,因为换大小不好换int size;//表示数组中存储了多少个有效数据,从头连续存储}SL;//简写
//向顺序表中插入数据
//对顺序表初始化
//接口函数,给别人用的,对接。--命名风格跟STL走,方便后续学习STL
void SeqListInit( SL* ps);
//尾插数据
void SeqListPushBack( SL* ps, SLDataType x);//用SLDataType做这个地方的类型
//结构体SeqList太长,可typedef一下,变成SL
//尾删
void SeqListPopBack( SL* ps);
//头插
void SeqListPushFront( SL* ps, SLDataType x);
//头删
void SeqListPopFront( SL* ps);

静态顺序表

  1. 特点:满了不让插入
  2. 缺点:给多大的空间很难确定n给小不够用,n给大了浪费。

动态顺序表

#pragma once
typedef int SLDataType;
typedef struct SeqList
{SLDataType* a;//定义成指针int size;//表示数组中存储了多少个有效数据,从头连续存储//提供动态开辟内存的方式malloc,在堆上可以动态开辟内存,不用了可以释放。//最后不够了把原来的空间释放,开更大的一块空间。叫做扩容。//现在的结构不足以方便地表示动态顺序表。有一个指针,指向动态开辟的空间。//增加capacity即容量。表示数组实际能存的空间容量多大。多少个数据int capacity;}SL;

SeqList.c

#include "SeqList.h"
#include <stdio.h>
#include <stdlib.h>
//初始化
void SeqListInit(SL ps)
{//应该用.因为a是成员ps.a = NULL;ps.size = ps.capacity = 0;//最开始对顺序表的初始化
}
//尾插数据
void SeqListPushBack(SL* ps, SLDataType x);//用SLDataType做这个地方的类型
//结构体SeqList太长,可typedef一下,变成SL
//尾删
void SeqListPopBack(SL* ps);
//头插
void SeqListPushFront(SL* ps, SLDataType x);
//头删
void SeqListPopFront(SL* ps);

Test.c

#include "SeqList.h"
//调用函数
void TestSeqList1()
{SL sl;
//sl未初始化SeqListInit(sl);//对结构体进行初始化
}
int main()
{TestSeqList1();return 0;
}

错误的!!!
sl:实参
ps:形参
实参传给形参。ps形参改变不影响实参
用实参的地址,应该传指针
修改:
void SeqListInit(SL* ps);
ps->a = NULL;
ps->size = ps->capacity = 0;
SeqListInit(&sl);

尾插数据


void SeqListPushBack(SL* ps, SLDataType x)//用SLDataType做这个地方的类型
{//整个顺序表没有空间//刚进来只对其进行初始化没有空间//如果没有空间或空间不足就扩容if (ps->size == ps->capacity)//第二种情况:capacity空间满了,扩容realloc,对已有的空间扩容{int newcapacity = ps->capacity == 0 ? 4 : ps->capacity;//如果=0给四。不是零增2倍SLDataType* tmp = (SLDataType*)realloc(ps->a, newcapacity * sizeof(SLDataType));//不应给数据个数,应给字节个数if (tmp == NULL){printf("realloc fail\n");exit(-1);}ps->a = tmp;ps->capacity = newcapacity;}ps->a[ps->size] = x;ps->size++;//空间足够
}

return -1:不可以,没有终止掉程序
exit(-1):结束掉程序,异常退出返回-1,正常返回0
动态顺序表:
//顺序表的动态存储

typedef struct SeqList
{
SLDataType* array;//指向动态开辟的数组
size_t size;//有效数据个数
size_t capacity;//容量空间的大小
}SeqList;

调试按Fn+F11
在这里插入图片描述
在这里插入图片描述

SeqList.c

void SeqListPrint(SL* ps)//把顺序表中的打印
{for (int i = 0; i < ps->size; ++i){printf("%d ", ps->a[i]);}printf("\n");
}

Test.c

SeqListPrint(&sl);

在这里插入图片描述

插入数据不用以后空间需要销毁。

//销毁顺序表
void SeqListDestory(SL* ps);
//销毁顺序表
void SeqListDestory(SL* ps);
{free(ps->a);ps->a = NULL;ps->capacity = ps->size = 0;
}
//把空间还给系统
 SeqListDestory(&SL);

继续写尾删,想把尾上的数据删除

typedef struct SeqList
{SLDataType* a;int size;//插入了两个数据int capacity;//可以存几个数据}SL;

把尾上的数置成零,再把size–

void SeqListPopBack(SL* ps)
{//ps->a[ps->size - 1] = 0;//把数置成0ps->size--;//原来是2,后来减到1.
}

size标识存了制了多少有效数据

SeqListPopBack(&sl);SeqListPopBack(&sl);//删除两个数据后再打印SeqListPrint(&sl);

在这里插入图片描述
为防止删除的数据多于原本的数据个数
需加前提条件

void SeqListPopBack(SL* ps)
{if (ps->size > 0){ps->a[ps->size - 1] = 0;ps->size--;//原来是2,后来减到1}
}

在这里插入图片描述
粗暴的方式

#include <assert.h>//断言
void SeqListPopBack(SL* ps)
{assert(ps->size > 0);ps->size--;
}

在这里插入图片描述
在64行断言失败。

http://www.jmfq.cn/news/5022523.html

相关文章:

  • 无锡企业自助建站系统/哈尔滨新闻头条今日新闻
  • 沈阳市网站制作公司/广西seo搜索引擎优化
  • 政府网站建设专业/微信引流主动被加软件
  • 自己做的网站怎样赚钱吗/培训机构在哪个平台找
  • 网站建设验收要求/如何建立自己的网站平台
  • 怎么做查询数据输入的网站/soso搜索引擎
  • 属于b2c商城企业的有哪些/seo公司推荐推广平台
  • 平面设计可以做网站/seo顾问是什么职业
  • 青岛的做网站公司/免费舆情监测平台
  • 网站开发专业实习报告/网络营销服务公司
  • 苏州电商关键词优化/引擎优化
  • 除了网页外 网站还需要/宁波网站推广
  • 网站301重定向 权重转移/百度指数的功能
  • 通付盾 建设网站/十大软件免费下载网站排行榜
  • 物联网小项目/seo零基础入门到精通200讲
  • 江门免费模板建站/今日新闻10条简短
  • 美术培训学校网站模板/小红书怎么推广引流
  • 东莞市建设局质量监督网站/八宿县网站seo优化排名
  • 沈阳市建设工程质量监督局网站/优化关键词技巧
  • 如何制作网站视频的软件/重庆百度快速优化
  • 网站建设推广公司需要哪些岗位/人民网舆情数据中心官网
  • 网站设计哪里公司好/企业邮箱注册
  • 狠狠做网站/自助建站系统开发
  • 学做网站的步骤/seo网站排名厂商定制
  • 雨花区区网站建设公司/百度官方网站登录
  • php 简单购物网站/大数据分析
  • 手机直播app开发制作/宁波网络推广优化方案
  • 用css代码做新闻网站/提高工作效率英语
  • 遵义做网站/深圳广告策划公司
  • 媒体网站怎么做/北京网络营销公司哪家好