数据结构2.22

  1. 思维导图
  2. 顺序表(按位置插入、按位置删除和去重)
    //main.c
    #include "seq_list.h"
    int main()
    {seq_p L = create_seq_list();insert_head(L,23);insert_head(L,20);insert_head(L,9);insert_head(L,20);insert_head(L,20);insert_head(L,6);insert_pos(L,321,2);insert_pos(L,123,6);out_put(L);putchar(10);del_pos(L,2);out_put(L);putchar(10);del(L);out_put(L);return 0;
    }//seq_list.c
    #include "seq_list.h"seq_p create_seq_list()
    {seq_p L = (seq_p)malloc(sizeof(seq_list));if(L==NULL){printf("空间申请失败\n");return;}L->len = 0;bzero(L,sizeof(L->data));return L;
    }int seq_empty(seq_p L)
    {if(L==NULL)return -1;return L->len==0?1:0;
    }
    int seq_full(seq_p L)
    {if(L==NULL)return -1;return L->len==MAX?1:0;
    }void out_put(seq_p L)
    {if(L==NULL){return;}if(seq_empty(L)){printf("表为空\n");return;}for(int i=0;i<L->len;i++){printf("%d\n",L->data[i]);}
    }//顺序表头插
    void insert_head(seq_p L,datatype data)
    {if(L==NULL){printf("入参为空,请检查\n");return;}if(seq_full(L)==1){printf("表已满,不能头插插入\n");return;}for(int i=L->len-1;i>=0;i--){L->data[i+1] = L->data[i];}L->data[0]=data;L->len++;
    }//按位置插入
    //从第0个位置开始计数
    void insert_pos(seq_p L,datatype value,int pos)
    {if(L==NULL){printf("入参为空,请检查\n");return;}if(seq_full(L)==1){printf("表已满,不能按位置插入\n");return;}if(pos>L->len||pos<0){	printf("位置不合理\n");return;}for(int i=L->len-1;i>=pos;i--){L->data[i+1]=L->data[i];}L->data[pos]=value;L->len++;
    }//按位置删除
    void del_pos(seq_p L,int pos)
    {if(L==NULL){printf("入参为空,请检查\n");return;}if(seq_empty(L)){printf("表为空,无需删除\n");return;}if(pos>L->len||pos<0){	printf("位置不合理\n");return;}for(int i=pos;i<L->len-1;i++){L->data[i]=L->data[i+1];}L->len--;
    }//顺序表去重
    void del(seq_p L)
    {if(L==NULL){return;}if(seq_empty(L)){return;}if(L->len==1){printf("只有一个元素\n");return;}for(int i=0;i<L->len;i++){for(int j=i+1;j<L->len;j++){if(L->data[i]==L->data[j]){del_pos(L,j);j--;}}}
    }//seq_list.h
    #ifndef __SEQ_LIST_H__
    #define __SEQ_LIST_H__
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 7
    typedef int datatype;
    typedef struct seq_list
    {datatype data[MAX];int len;
    }seq_list,*seq_p;
    //创建顺序表
    seq_p create_seq_list();
    //判满
    int seq_full(seq_p L);
    //判空
    int seq_empty(seq_p L);//打印顺序表
    void out_put(seq_p L);//顺序表头插//顺序表头插
    void insert_head(seq_p L,datatype data);//按位置插入
    void insert_pos(seq_p L,datatype value,int pos);//按位置删除
    void del_pos(seq_p L,int pos);//顺序表去重
    void del(seq_p L);#endif
    
  3. 链表的尾插和输出
    //main.c
    #include "link_list.h"
    int main()
    {link_p H=NULL;H = create_head();insert_head(H,12);insert_head(H,6);insert_head(H,90);pout(H);insert_tail(H,8);insert_tail(H,7879);pout(H);return 0;
    }//link_list.c
    #include "link_list.h"//创建单链表,在堆区申请空间
    //实际在创建头结点,因为头结点指向整条链表
    link_p create_head()
    {link_p L= (link_p)malloc(sizeof(link_list));if(L==NULL){printf("空间申请失败\n");return NULL;}L->len=0;  //创建时链表中没有元素,长度为0L->next=NULL;  //创建空的单链表,头结点没有指向,置空  return L;
    }
    //创建结点
    link_p create_node(datatype data)
    {link_p new=(link_p)malloc(sizeof(link_list));if(new==NULL){printf("空间申请失败\n");return NULL;}new->data=data;return new;
    }
    //头插
    void insert_head(link_p H,datatype data)
    {//1\容错判断if(H==NULL){printf("入参为空,请检查\n");return;}//申请新的结点link_p new = create_node(data);//新结点指向头结点的下一个结点new->next = H->next;//头结点指向新的结点H->next = new;H->len++;
    }//尾插
    void insert_tail(link_p H,datatype data)
    {if(H==NULL){printf("入参为空,请检查\n");return;}link_p new = create_node(data);while(H->next!=NULL){H=H->next;}H->next=new;
    }//输出
    void pout(link_p H)
    {link_p head=H->next;if (head == NULL){printf("空link\n");return;}while (head != NULL) {printf("%d ", head->data);head = head->next;}putchar(10);
    }//link_list.h
    #ifndef __LINK_LIST_H__
    #define __LINK_LIST_H__
    #include <stdio.h>
    #include <stdlib.h>typedef int datatype;
    typedef struct link_list
    {union{int len;datatype data;};struct link_list *next;
    }link_list,*link_p;//创建单链表,在堆区申请空间
    link_p create_head();
    //创建结点
    link_p create_node(datatype data);
    //头插
    void insert_head(link_p H,datatype data);//尾插
    void insert_tail(link_p H,datatype data);
    //输出
    void pout(link_p H);#endif
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/484914.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024牛客寒假算法基础集训营3 -BDGH

B题 &#xff1a;智乃的数字手串 思路&#xff1a; 思维题&#xff0c;本题题意N个数组首尾相连&#xff0c;然后当某两个相邻数组和为偶数时&#xff0c;交替拿走&#xff0c;并在选择两个数字交换位置&#xff0c;直到没有可以操作的数字为止。 我们可以考虑&#xff0c;数字…

016—pandas 分析近100年圣诞节日期分布

需求&#xff1a; 利用Pandas 分析近100年圣诞节的星期分布&#xff0c;目的是知道圣诞节都在星期几&#xff0c;哪个星期多些。 思路&#xff1a; 用 pd.date_range 生成 100 年日期数据 筛选出12月25日的所有日期 将日期转换为星期几 统计重复值的数量 绘图 二、…

LeetCode 热题 100 Day01

哈希模块 哈希结构&#xff1a; 哈希结构&#xff0c;即hash table&#xff0c;哈希表|散列表结构。 图摘自《代码随想录》 哈希表本质上表示的元素和索引的一种映射关系。 若查找某个数组中第n个元素&#xff0c;有两种方法&#xff1a; 1.从头遍历&#xff0c;复杂度&#xf…

快速鲁棒的ICP(一)

一、代码下载以、修改以及使用 链接&#xff1a;OpenGP/sparseicp: Automatically exported from code.google.com/p/sparseicp (github.com) 解压之后&#xff1a; 快速鲁棒的ICP是其他人在这份Sparse ICP代码基础上改写出来的&#xff1a; 我这里已经下载好了&#xff1a;…

代码随想录算法训练营day19||二叉树part06、654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

654.最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums …

《VitePress 简易速速上手小册》第7章 高级功能与动态内容(2024 最新版)

文章目录 7.1 动态路由与 API 集成7.1.1 基础知识点解析7.1.2 重点案例&#xff1a;技术博客7.1.3 拓展案例 1&#xff1a;电商网站7.1.4 拓展案例 2&#xff1a;事件管理网站 7.2 状态管理与 Vuex 使用7.2.1 基础知识点解析7.2.2 重点案例&#xff1a;用户认证系统7.2.3 拓展案…

IEEE802.11k协议介绍

IEEE802.11k协议简介 协议全称&#xff1a;无线局域网的无线电资源测量(Radio Resource Measurement of Wireless LANs)批准日期&#xff1a;2008年5月协议状态&#xff1a;并入802.11-2012协议别名&#xff1a;辅助漫游协议说明&#xff1a; 定义了接入点(AP)和终端(STA&…

机器人内部传感器阅读笔记及心得-位置传感器-旋转变压器、激光干涉式编码器

旋转变压器 旋转变压器是一种输出电压随转角变化的检测装置&#xff0c;是用来检测角位移的&#xff0c;其基本结构与交流绕线式异步电动机相似&#xff0c;由定子和转子组成。 旋转变压器的原理如图1所示&#xff0c;定子相当于变压器的一次侧&#xff0c;有两组在空间位置上…

【测试】----JMeter性能测试工具入门篇

定义&#xff08;主要测试的是接口&#xff09; JMeter是Apache组织使用Java开发的一款测试工具&#xff0c;可以对服务器&#xff0c;网络或者对象模拟巨大的负载情况&#xff1b;通过创建带有断言的脚本来验证程序是否能返回期望的结果 优缺点 优点 开源免费跨平台&#xff0…

普中51单片机(DS18B20温度传感器)

DS18B20温度传感器原理 内部结构 64位(激)光刻只读存储器 光刻ROM中的64位序列号是出厂前被光刻好的&#xff0c;它可以看作是该DS18B20的地址序列号。64位光刻ROM的排列是&#xff1a;开始8位&#xff08;28H&#xff09;是产品类型标号&#xff0c;接着的48位是该DS18B20自身…

K8S部署Java项目 pod的logs报错为:Error: Unable to access jarfile app.jar

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Vue报错,xxx is defined #变量未定义

vue.js:5129 [Vue warn]: Error in v-on handler: "ReferenceError: count is not defined" 浏览器将这个变量 当做全局变量了&#xff0c;事实上它只是实例中的变量 加上this指定&#xff0c;是vue实例中的变量