当前位置: 首页> 房产> 建材 > app推广方式有哪些_秦皇岛市海港区人民政府官网_深圳seo培训_seo推广怎么入门

app推广方式有哪些_秦皇岛市海港区人民政府官网_深圳seo培训_seo推广怎么入门

时间:2025/7/14 14:04:37来源:https://blog.csdn.net/2301_80334754/article/details/145828390 浏览次数:1次
app推广方式有哪些_秦皇岛市海港区人民政府官网_深圳seo培训_seo推广怎么入门

1.线性表的定义
  存在唯一的一个被称为“第一个”的数据元素;存在唯一的一个被称为“最后一个”的数据元素;除第一个之外,集合中的每一个数据元素都只有一个前驱;除最后一个之外,集合中的每一个数据元素都只有一个后继。

  线性表是最简单最常用的一种线性表。线性表分为顺序表和链表。顺序表又分为定长顺序表和不定长顺序表。

2. 线性表的顺序表,顺序表的设计思想
加入length和左端连续
typedef struct SQList
{
    int elem[10];
    int length;
} SQList, * PSQList;

头文件sqlist.h文件

#pragma once
//防止头文件重复编译
//定长顺序表//定义与声明
typedef struct SQList
{int elem[10];int length;
} SQList, * PSQList;


结构示意图

length表示前length个数据是有效的

int i = ps->length-1;//(存在边界问题)

在某号位置插入某个数据,即将ps->elem[i+1]=ps->elem[i];

实现
#include "sqlist.h"
#include <assert.h>
#include <stdio.h>//定长顺序表的实现//初始化(自己定义的结构体,名字叫ps)
//ps是结构体,访问结构体里面的用指向符 ->
void  InitSqlist(PSQList ps)
{assert(ps != NULL);//判断参数,ps是外面传进来的,有可能为空if (ps == NULL)return;ps->length = 0;
}
static bool IsFul(PSQList ps)
{return ps->length == 10;
}//插入数据,在ps顺序表的pos位置插入val;
bool Insert(PSQList ps, int pos, int val)
{assert(ps != NULL);if (ps == NULL)return false;if (pos<0 || pos>ps->length||IsFul(ps)){return false;}//把数据移动到后面for (int i=ps->length-1;i>=pos;i--){ps->elem[i + 1] = ps->elem[i];}//插入数据ps->elem[pos] = val;//有效数据的个数++;ps->length++;return true;
}

输出函数

//输出
void Show(PSQList ps)
{assert(ps != NULL);if (ps == NULL)return;for (int i = 0; i > ps->length; i++){printf("%d", ps->elem[i]);}printf("\n");
}

以上就是核心代码

接下来实现对定长顺序表的一些操作

①在ps中查找第一个key值,找到返回下标,没有找到返回-1;

//判空
bool IsEmpty(PSQList ps)
{return ps->length == 0;
}//在ps中查找第一个key值,找到返回下标,没有找到返回-1;
int Search(PSQList ps, int key)
{for (int i = 0; i < ps->length; i++){if (key == ps->elem[i]){return i;}}return -1;
}

②删除pos位置的值

//删除pos位置的值
bool DelPos(PSQList ps, int pos)
{assert(ps != NULL);if (ps == NULL)return false;if (pos < 0 || pos >= ps->length)//如果是空表pos也满足大于0{return false;}//把数据前移for (int i = pos; i < ps->length - 1; i++){ps->elem[i] = ps->elem[i + 1];}//有效数据个数--ps->length--;return true;
}

③删除第一个val的值

//删除第一个val的值
bool DelVal(PSQList ps, int val)
{assert(ps != NULL);if (ps == NULL)return false;int i = Search(ps, val);//i是下标//调用参数如果有返回值,将返回值进行判断,这是一个好习惯if (i < 0){return false;}return DelPos(ps, i);}

④//返回key的前驱下标,如果不存在返回-1

//返回key的前驱下标,如果不存在返回-1;
int GetPrio(PSQList ps, int key)
{int i = Search(ps, key);if (i <= 0)//注意:头没有前驱{return -1;}return i - 1;
}

⑤返回key的后继下标,如果不存在返回-1

int GetNext(PSQList ps, int key)
{int i = Search(ps, key);if (i < 0 || i == ps->length - 1)//注意:尾没有后继{return -1;}return i + 1;
}

⑥清空数据

//清空数据
void Clear(PSQList ps)
{ps->length = 0;
}

⑦销毁整个内存

//销毁整个内存.动态内存,没有用malloc,直接用clear清空即可
void Destroy(PSQList ps)
{Clear(ps);
}


整体代码:

实现
#include "sqlist.h"
#include <assert.h>
#include <stdio.h>//定长顺序表的实现//初始化(自己定义的结构体,名字叫ps)//ps是结构体,访问结构体里面的用指向符 ->
void  InitSqlist(PSQList ps)
{assert(ps != NULL);//判断参数,ps是外面传进来的,有可能为空if (ps == NULL)return;ps->length = 0;
}
static bool IsFul(PSQList ps)
{return ps->length == 10;
}//插入数据,在ps顺序表的pos位置插入val;
bool Insert(PSQList ps, int pos, int val)
{assert(ps != NULL);if (ps == NULL)return false;if (pos<0 || pos>ps->length||IsFul(ps)){return false;}//把数据移动到后面for (int i=ps->length-1;i>=pos;i--){ps->elem[i + 1] = ps->elem[i];}//插入数据ps->elem[pos] = val;//有效数据的个数++;ps->length++;return true;
}//判空
bool IsEmpty(PSQList ps)
{return ps->length == 0;
}//在ps中查找第一个key值,找到返回下标,没有找到返回-1;
int Search(PSQList ps, int key)
{for (int i = 0; i < ps->length; i++){if (key == ps->elem[i]){return i;}}return -1;
}//删除pos位置的值
bool DelPos(PSQList ps, int pos)
{assert(ps != NULL);if (ps == NULL)return false;if (pos < 0 || pos >= ps->length)//如果是空表pos也满足大于0{return false;}//把数据前移for (int i = pos; i < ps->length - 1; i++){ps->elem[i] = ps->elem[i + 1];}//有效数据个数--ps->length--;return true;
}//删除第一个val的值
bool DelVal(PSQList ps, int val)
{assert(ps != NULL);if (ps == NULL)return false;int i = Search(ps, val);//i是下标//调用参数如果有返回值,将返回值进行判断,这是一个好习惯if (i < 0){return false;}return DelPos(ps, i);}//返回key的前驱下标,如果不存在返回-1;
int GetPrio(PSQList ps, int key)
{int i = Search(ps, key);if (i <= 0)//注意:头没有前驱{return -1;}return i - 1;
}//返回key的后继下标,如果不存在返回-1;
int GetNext(PSQList ps, int key)
{int i = Search(ps, key);if (i < 0 || i == ps->length - 1)//注意:尾没有后继{return -1;}return i + 1;
}//输出
void Show(PSQList ps)
{assert(ps != NULL);if (ps == NULL)return;for (int i = 0; i > ps->length; i++){printf("%d", ps->elem[i]);}printf("\n");
}//清空数据
void Clear(PSQList ps)
{ps->length = 0;
}
//销毁整个内存.动态内存,没有用malloc,直接用clear清空即可
void Destroy(PSQList ps)
{Clear(ps);
}

关键字:app推广方式有哪些_秦皇岛市海港区人民政府官网_深圳seo培训_seo推广怎么入门

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: