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

合肥网站建设推荐 晨飞网络wordpress分页标题

合肥网站建设推荐 晨飞网络,wordpress分页标题,珠海网站建设最新报价,wordpress手机登录跳转页面模板老规矩#xff0c;点赞评论收藏关注#xff01;#xff01;#xff01; 目录 线性表 其特点是#xff1a; 算法实现#xff1a; 运行结果展示 链表 插入元素#xff1a; 删除元素#xff1a; 算法实现 运行结果 线性表是由n个数据元素组成的有限序列#xff…        老规矩点赞评论收藏关注 目录 线性表 其特点是 算法实现 运行结果展示 链表 插入元素 删除元素 算法实现 运行结果 线性表是由n个数据元素组成的有限序列每个元素都有唯一的下标下标从0开始递增。线性表的元素之间存在一对一的线性关系即除首元素外每个元素有且只有一个前驱元素除尾元素外每个元素有且只有一个后继元素。线性表可以通过顺序存储或链式存储来实现。线性表的基本操作包括初始化、创建、增加、删除和查找等。 顺序表和链表是线性表的两种实现方式都是用来存储逻辑关系为“一对一”的数据。它们的相同点是都是线性表结构元素逻辑存储上是连续的每个元素都有唯一的前驱和唯一的后继。它们的不同点是底层存储空间不一样顺序表底层存储空间是连续的而链表则是不连续的插入和删除方式不同顺序表任意位置进行插入和删除操作需要搬运大量的元素效率低时间复杂度为ON。顺序表集中存储数据适合访问、遍历数据在数据量确定时空间利用率高链表通过指针链接数据适合插入、删除数据在数据量不确定时空间利用率高。 线性表 线性表的顺序表示是指用一组地址连续的存储单元依次存储线性表的数据元素。 其特点是 1第 i 个元素 a i 的存储位置可以用公式计 LOC(a i) LOC(a1)(i-1)*L 其中 LOC(a1)第一个元素a1 的存储位置L 每个元素需占的存储单元 2表中相邻的元素 a i和 a i1赋以相邻的存 储位置 LOC(a i)和 LOC(a i1) 3是一种随机存储结构只要知道线性表的 起始位置就可随机存取线性表中的任一元素。 ​ 当我们要在线性表的顺序存储结构上的第 i 个位置上插入一个元素时必须先将 线性表第 i 个元素之后的所有元素依次后移一个位置以便腾空一个位置再把新元素插入到该位置。若要删除第 i 个元素时也必须把第 i 个元素之后的所有元素前 移一个位置。 ​ ​ 算法实现 1、引入头文件、定义结构体 #define _CRT_SECURE_NO_WARNINGS #include stdio.h #include stdlib.h #include string.h #define INIT_SIZE 100 //初始分配量 #define INCRE_SIZE 10 //分配增量typedef struct {int *pList;int length;int listSize; }SqList; 2、创建顺序表 //顺序表的创建 void initial(SqList L) { //使pList指向连续存储空间的首地址L.pList (int*)malloc(INIT_SIZE * sizeof(int));L.length 0; //目前元素的个数为0L.listSize INIT_SIZE; //空间最大存储的数量 } 3、定义插入函数 //第i个元素前插入e void insert(int e,SqList L,int i) {if (i L.length || L.length L.listSize) {//将第i个元素开始依次往后移动一个位置将L[i-1]的位置腾出for (int curIndex L.length - 1; curIndex i - 1; --curIndex) {L.pList[curIndex 1] L.pList[curIndex];}L.pList[i - 1] e;L.length; //多存了个数据元素个数加一} } 4、定义删除函数 void delete_(SqList L,int i) {if (i L.length || L.length L.listSize) {//将第i个元素开始依次往后移动一个位置for (int curIndex i-1; curIndex L.length; curIndex) {L.pList[curIndex] L.pList[curIndex 1];}--L.length; //多存了个数据元素个数减一} } 5、初始化输入表 //初始输入表 void initial_list(SqList* L) {int n,d;printf(请输入输入数字个数n(大于1的整数):);scanf_s(%d, n);while (1) {if (n 0) {printf(请输入大于0的整数);scanf_s(%d, n);}else {break;}}//printf(%d, n);for (int i 0; i n-1; i) {printf(请输入第%d个数,i1);scanf_s(%d,d);L-pList[i] d;}L-length n; } 6、定义打印函数 //打印数组 void print_function(SqList L) {for (int i 0; i L.length; i) {printf(%d , L.pList[i]);}printf(\n); } 7、主函数 int main() {SqList L;initial(L);initial_list(L);printf(原数组:\n);print_function(L);printf(\n);while (1) {printf(请输入0/1/2对线性表进行操作(0是退出,1是插入,2是删除):\n);int num;scanf(%d, num);if (num 1) {printf(现在进入插入环节请指定插入元素与插入位置:\n);int i, n;scanf(%d %d, i, n);insert(i, L, n);printf(插入后的数组:\n);print_function(L);}else if (num 2) {printf(现在进入删除环节请指定删除要元素位置:\n);int n;scanf(%d,n);delete_(L, n);printf(删除后的数组:\n);print_function(L);}else if (num 0) {break;}else {printf(请输入正确的操作输入0/1/2\n);}}return 0; } 运行结果展示         输入数字个数n,并输入这n个数         选择下一步操作0退出1插入2删除 链表 双向链表 结点有两个指针域一个指向直接后继另一个指向直接前驱。目的是克服单链 表的单向寻查的缺点。 插入元素 当插入数据元素时首先生成一个结点结点的数据域为插入的元素然后找到元素的插入位置最后修改指针域。例如下图中在 p 结点后插入新生 成结点 s则修改指针的语句为 s -data e; s-next  p-next;  p-next  s; 删除元素 当删除数据元素时仅修改待删除结点的前一个结点的指针。例如下 图中待删除的结点为 qq 的前一个结点为 p删除后结点 q 的数据赋给 e则修改 指针的语句为 q p -next;  p-next q-next; e  q- data;  free(q); 算法实现 1、头文件、结构体的定义 #define _CRT_SECURE_NO_WARNINGS #include stdio.h #include stdlib.h typedef struct Node {int data;struct Node* prior;struct Node* next; } Node; 2、双链表中添加节点 // 在双链表末尾添加节点 void append(Node** head, int data) {Node* newNode createNode(data);if (*head NULL) {*head newNode;}else {Node* temp *head;while (temp-next ! NULL) {temp temp-next;}temp-next newNode;newNode-prior temp;} } 3、定义打印函数 // 打印双链表 void printList(Node* head) {Node* temp head;while (temp ! NULL) {printf(%d , temp-data);temp temp-next;}printf(\n); } 4、指定位置插入元素 // 在指定位置插入节点 void insertAtPosition(Node** head, int position, int data) {Node* newNode createNode(data);if (position 1) {newNode-next *head;if (*head ! NULL) {(*head)-prior newNode;}*head newNode;}else {Node* temp *head;for (int i 1; temp ! NULL i position - 1; i) {temp temp-next;}if (temp NULL) {printf(Position out of bounds\n);free(newNode);return;}newNode-next temp-next;newNode-prior temp;if (temp-next ! NULL) {temp-next-prior newNode;}temp-next newNode;} } 5、删除元素 // 删除指定值的节点 void deleteValue(Node** head, int data) {Node* temp *head;Node* prior NULL;while (temp ! NULL temp-data ! data) {prior temp;temp temp-next;}if (temp NULL) {printf(Value not found\n);return;}if (prior NULL) {*head temp-next;}else {prior-next temp-next;}if (temp-next ! NULL) {temp-next-prior prior;}free(temp); } 6、主函数 int main() {Node* list NULL;int n, choice, position, data;printf(请输入数字n: );scanf(%d, n);printf(请输入%d个数字:\n, n);for (int i 0; i n; i) {int num;scanf(%d, num);append(list, num);}printf(当前列表: );printList(list);printf(请输入1和2选择操作1插入 2删除\n);scanf(%d, choice);if (choice 1) {printf(请输入插入位置和插入的数字: );scanf(%d %d, position, data);insertAtPosition(list, position, data);}else if (choice 2) {printf(请输入要删除的数字: );scanf(%d, data);deleteValue(list, data);}else {printf(无效选择\n);}printf(最终列表: );printList(list);// 释放链表内存 Node* temp;while (list ! NULL) {temp list;list list-next;free(temp);}return 0; } 运行结果 输入数字个数n并依次输入这n个元素 选择下一步操作1插入2删除 您的点赞和关注是我持续更新下去的动力
http://www.w-s-a.com/news/504711/

相关文章:

  • 功能型网站响应式网站原理
  • 聊城建设网站骨干校 建设网站
  • 网站建设与管理是干嘛的中国新闻社是什么单位
  • 帮别人做视频剪辑的网站传业做微采商城网站
  • 设计一个网站开发方案宣传片制作企业
  • 新网站收录多少关键词免费一键网站
  • 网页制作与网站建设 在线作业手表网站制作照片
  • 电商网站开发技术与维护重庆建筑工程交易信息网
  • 人和马做的网站线上营销推广方式
  • 青海教育厅门户网站有赞商城
  • 网站建设多语种自动翻译插件wordpress谷歌翻译插件
  • 泰安高级网站建设推广wordpress教程 好看
  • 我自己的网站怎么做关键词优化泰安网站建设dxkjw
  • 平面设计做画册用网站泰州seo平台
  • 申请一个域名后怎么做网站evernote wordpress
  • 网站左侧导航栏设计网站开发后台数据怎么来
  • 临西做网站报价网站建设需要写语句吗
  • 建设网站网站首页购物网站开发代码
  • 淘宝客怎么建立网站网站360优化
  • 安徽建海建设工程有限公司网站网站空间和域名价格
  • 农产品网站建设策划哪里有做枪网站的
  • 更改各网站企业信息怎么做张家港企业网站制作
  • 郑州网站建设咨询银川做网站哪家好
  • 微信网站 微信支付合肥seo排名收费
  • 织梦做的网站如何上线广东省广州市番禺区南村镇
  • 网站设计的导航栏怎么做太原有网站工程公司吗
  • 苏州虎丘区建设局网站如何在一个数据库做两个网站
  • 淘宝天猫优惠券网站建设费用腾讯邮箱企业邮箱登录
  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色