数据结构,线性表,顺序表基础。

 

 

1.线性表

              线性表特征:

             

  1. 对非空表,a0是表头,无前驱
  2. a(n-1)是表尾,无后继
  3. 其他的都有ai前驱a(i-1)与后继a(i+1)。

 2、顺序结构存储方式是线性表存储的一种方式,主要体现形式为数组。

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 10
typedef int data_t;

typedef struct list{
    data_t data[SIZE];//保存数据的数组(表)
    data_t last;//保存尾元素的下标

} seqlist,*seqlist_t;

//创建顺序表
seqlist* create_selist()
{
		seqlist_t head =(seqlist*) malloc (sizeof(seqlist));
			if(NULL==head) return NULL;
			memset(head->data,0,sizeof(head->data));
			head->last=-1;//表示空
			return head;//返回表头
}
//判空:
	int seqlist_is_empty(seqlist* head)
{
		if(NULL==head) return -1;
		return (-1==head->last)?1:0;
}
//判满
int seqlist_is_full(seqlist * head)
{
	if(NULL==head) return -1;
		return (SIZE==head->last+1)?1:0;
}
//求元素个数
int seqlist_is_num(seqlist * head)
{
	if(NULL==head) return -1;
		return (head->last+1);
}
//指定位置增加元素
int seqlist_is_install(seqlist * head,int pos,data_t val)
{
	if(NULL==head) return -1;//指向为空
    if(1==seqlist_is_full(head)) return -2; //线性表已经满了
    
    #if 1
    int i=seqlist_is_num(head);//1、数量初始化i
    for ( i ; i>pos; i--)//此处i可以等于也可以不等于pos
    {
        head->data[i]=head->data[i-1];
    }
    #else   
    int i=head->last;//2、下标初始化i 
    for ( i ; i>=pos; i--)
    {
        head->data[i+1]=head->data[i];
    }
    #endif
    

    head->data[pos]=val;
    head->last++;
    return 0;
}
//指定位置删除元素
int seqlist_is_del(seqlist * head,int pos)
{
	if(NULL==head) return -1;//指向为空
    if(1==seqlist_is_empty(head)) return -2; //线性表为空
    for (int i=pos;i<head->last; i++)
    {   
        head->data[i]=head->data[i+1];
    }
    head->last--;
    return 0;
}
//修改指定位置元素
int seqlist_is_change(seqlist * head,int pos,int val)
{
	if(NULL==head) return -1;//指向为空
    if(1==seqlist_is_empty(head)) return -2; //线性表为空
        head->data[pos]=val;
    return 0;
}
//查找元素
int seqlist_is_find(seqlist * head,int val)
{
	if(NULL==head) return -1;//指向为空
    if(1==seqlist_is_empty(head)) return -2; //线性表为空
    for (int i = 0; i<=head->last; i++)
    {
        if(head->data[i]==val)
        {
            return i;
        }
    }
    return -1;
}
//输出数组
int seqlist_is_print(seqlist *head)
{  
    if(NULL==head) return -1;//线性表为空
    for (int i = 0; i <seqlist_is_num(head); i++)
        {
           printf("%d ",head->data[i]);
        }
        puts("");
}

int main()
{
    seqlist * phead=create_selist();
    seqlist_is_install(phead,0,1);
    seqlist_is_install(phead,1,2);
    seqlist_is_install(phead,2,3);
    seqlist_is_install(phead,3,4);
    seqlist_is_install(phead,4,5);
    seqlist_is_install(phead,5,6);
   //seqlist_is_install(phead,2,1233);
    seqlist_is_change(phead,3,11111);
    int k=seqlist_is_find(phead,3);

    if(k>-1)
    {
        printf("找到位置为%d\n",k);
    }
    else
    {
        printf("不存在要找的数\n");
    }
    
   // seqlist_is_del(phead,3);
    seqlist_is_print(phead);
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二、SQL,如何实现表的创建和查询

1、新建表格&#xff08;在当前数据库中新建一个表格&#xff09;&#xff1a; &#xff08;1&#xff09;基础语法&#xff1a; create table [表名]( [字段:列标签] [该列数据类型] comment [字段注释], [字段:列标签] [该列数据类型] comment [字段注释], ……&#xff0c…

2020年3月全国计算机等级考试真题(C语言二级)

2020年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 有以下程序 void fun1 (char*p) { char*q; qp; while(*q!\0) { (*Q); q&#xff1b; } } main() { char a[]{"Program"},*p; p&a[3]; fun1(p); print…

由浅入深详解四种分布式锁

在多线程环境下&#xff0c;为了保证数据的线程安全&#xff0c;锁保证同一时刻&#xff0c;只有一个可以访问和更新共享数据。在单机系统我们可以使用synchronized锁或者Lock锁保证线程安全。synchronized锁是Java提供的一种内置锁&#xff0c;在单个JVM进程中提供线程之间的锁…

Hyper-v导致Vmware window无法启动崩溃记录

最近有几次vmware启动window10直接崩溃情况&#xff0c;显示蓝屏报错。一开始没在意&#xff0c;以为是因为固态硬盘错了几个字节导致的&#xff1f; 但后来想想不对啊。vmware用了也有10来年了&#xff0c;稳得一笔&#xff0c;在仔细思考了一下后发现打不开的win10这三个虚拟…

go_并发编程(1)

go并发编程 一、 并发介绍1&#xff0c;进程和线程2&#xff0c;并发和并行3&#xff0c;协程和线程4&#xff0c;goroutine 二、 Goroutine1&#xff0c;使用goroutine1&#xff09;启动单个goroutine2&#xff09;启动多个goroutine 2&#xff0c;goroutine与线程3&#xff0…

使用PDF文件入侵任何操作系统

提示&#xff1a;我们8月28号开学,所以我得快点更新了&#xff0c;不能拖了&#x1f625; 文章目录 前言一、打开终端总结 前言 PDF文件被广泛应用于共享信息&#xff0c;电子邮件&#xff0c;网站或文档或存储系统的真实链接 它可以用于恶意软件的载体。 不要问我什么意思&am…

【克罗恩病是银屑病及银屑病关节炎的因果风险因素】

克罗恩病是银屑病及银屑病关节炎的因果风险因素 ①纳入463372名欧洲人&#xff0c;包括12882例IBD患者、5621例银屑病患者、2063例银屑病关节炎患者&#xff1b;②单变量孟德尔随机化&#xff08;MR&#xff09;分析表明&#xff0c;基于遗传因素预测的IBD与较高的银屑病和银屑…

LangChain源码逐行解密之系统(二)

LangChain源码逐行解密之系统 20.2 serapi.py源码逐行剖析 我们可以看一下Google查询的例子,在LangChain中有多种实现的方式。 如图20-5所示,在utilities的serpapi.py代码文件中实现了SerpAPIWrapper。 图20- 5 utilities的serpapi.py的SerpAPIWrapper 在langchain目录的se…

力扣:64. 最小路径和(Python3)

题目&#xff1a; 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a…

dll修复精灵怎么下载,vcruntime140.dll丢失该如何修复

vcruntime140.dll是Microsoft Visual C Redistributable中的一个动态链接库&#xff08;DLL&#xff09;文件。它是一种运行时库&#xff08;Runtime Library&#xff09;&#xff0c;用于支持使用Microsoft Visual C编写的程序的正常运行。作为一个DLL文件&#xff0c;vcrunti…

进行 200 瓦太阳能 (PV) 模块设计以测量太阳能光伏阵列的电压、电流和功率、综合负荷频率和电压控制系统的方法研究(Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Ceph如何操作底层对象数据

1.基本原理介绍 1.1 ceph中的对象(object) 在Ceph存储中&#xff0c;一切数据最终都会以对象(Object)的形式存储在硬盘&#xff08;OSD&#xff09;上&#xff0c;每个的Object默认大小为4M。 通过rados命令&#xff0c;可以查看一个存储池中的所有object信息&#xff0c;例如…

使用 PyTorch 进行高效图像分割:第 2 部分

一、说明 这是由 4 部分组成的系列的第二部分&#xff0c;旨在使用 PyTorch 中的深度学习技术从头开始逐步实现图像分割。本部分将重点介绍如何实现基线图像分割卷积神经网络&#xff08;CNN&#xff09;模型。 图 1&#xff1a;使用 CNN 运行图像分割的结果。按从上到下的顺序…

【无标题】QT应用编程: QtCreator配置Git版本控制(码云)

QT应用编程: QtCreator配置Git版本控制(码云) 感谢&#xff1a;DS小龙哥的文章&#xff0c;这篇主要参考小龙哥的内容。 https://cloud.tencent.com/developer/article/1930531?areaSource102001.15&traceIdW2mKALltGu5f8-HOI8fsN Qt Creater 自带了git支持。但是一直没…

Github下载任意版本的VsCode

下载历史版本VsCode(zip) 下载链接由三部分组成&#xff1a; 固定部分commit idVSCode-win32-x64-版本号.zip 固定部分&#xff1a; https://vscode.cdn.azure.cn/stable/ Commit id&#xff1a; 打开 vscode的GitHub&#xff1a;[https://github.com/microsoft/vscode/r…

echarts 柱状图-折线图-饼图的基础使用

上图示例图表展示相关配置&#xff1a; var myChart echarts.init(this.$refs.firstMain);myChart.setOption({legend: { // 图例设置top: "15%",type: "scroll",orient: "vertical",//图例列表的布局朝向。left: "right",pageIconCo…

记录一个编译TubeTK时的报错:at_check问题

在使用如下命令安装TubeTK的cuda_nms时&#xff0c;报了一个错误&#xff0c;记录一下这个错误和解决办法 (base) redmeryredmery:~/Desktop/MOT/TubeTK/post_processing/nms$ python setup.py build_ext --inplace因为这个命令是在/home/redmery/Desktop/MOT/TubeTK/install/…

泛微 E-Office文件上传漏洞复现

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…

回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测

回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测 目录 回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测&#x…

【刷题笔记8.17】LeetCode:最长公共前缀

LeetCode&#xff1a;最长公共前缀 &#xff08;一&#xff09;题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 &#xff08;二&#xff09;分析 纵向扫描时&#xff0c;从前往后遍历所有字符串的每一列&am…
最新文章