C语言实现顺序表

article/2025/8/22 4:50:48

c语言实现顺序表

线性表是最简单的数据结构,而顺序表又是最简单的线性表,其基本思想是用一段地址连续的储存单元依次存储线性表的数据元素,比如我们常用的一维数组,下面代码实现了顺序表的定义以及基本操作。

编译环境:vs2017。

运行试例:在这里插入图片描述
贴代码如下:

#include "stdio.h"
#include "windows.h"
#include "stdlib.h"#define MAXSIZE 20//顺序表最大长度/*定义顺序表*/
typedef struct {int data[MAXSIZE];int length;
}SeqList;/*初始化顺序表*/
void InitList(SeqList *l)
{l->length = 0;
}/*建立顺序表*/
int CreatList(SeqList *l, int a[], int n) {if (n > MAXSIZE){printf("空间不够,无法建立顺序表。\n");return 0;}for (int k = 0; k < n; k++){l->data[k] = a[k];}l->length = n;return 1;
}/*判空操作*/
int Empty(SeqList *l)
{if (l->length == 0)return 1;elsereturn 0;
}/*求顺序表长度*/
int Length(SeqList *l)
{return l->length;
}/*遍历操作*/
void PrintList(SeqList *l)
{for (int i = 0; i < l->length; i++)printf("%d ", (l->data[i]));
}/*按值查找*/
int Locate(SeqList *l,int x)
{for (int i = 0; i < l->length; i++){if (l->data[i] == x){return i + 1;}return 0;}return 1;
}/*按位查找*/
int Get(SeqList *l, int x,int *ptr)
{//若查找成功,则通过指针参数ptr返回值if ( x <1 || x>l->length){printf("查找位置非法,查找错误\n");return 0;}else{*ptr = l->data[x];return 1;}
}/*插入操作*/
int Insert(SeqList *l, int i, int x)
{if (l->length > MAXSIZE){printf("上溢错误!");return 0;}if (i<1 || i>l->length){printf("插入位置错误!");return 0;}for (int k = l->length; k > i; k--){l->data[k] = l->data[k - 1];}l->data[i] = x;l->length++;return 1;
}/*删除操作*/
int Delete(SeqList *l, int i, int *ptr)
{if (l->length == 0){printf("发生下溢错误,即将要访问顺序表之前的地址.\n");return 0;}if (i > l->length || i < 1){printf("删除位置错误!\n");return 0;}*ptr = l->data[i - 1];//把要删除的数据返回for (int j = i; j < l->length; j++){l->data[j - 1] = l->data[j];}l->length--;return 1;
}/*修改操作*/
int Modify(SeqList *l, int i, int x)
{if (i > l->length || i < 1){printf("位置错误!\n");return 0;}l->data[i] = x;return 1;
}int main()
{int a[5] = {1,2,3,4,5 };int  i, x;SeqList list1;InitList(&list1);//初始化顺序表if (Empty(&list1)){printf("初始化顺序表成功!\n");}printf("给顺序表赋值:1 2 3 4 5\n遍历并输出顺序表:\n");CreatList(&list1,a,5 );//建立一个长度为5的线性表PrintList(&list1);//遍历输出此顺序表printf("\n在第三位后插入一个100:\n");Insert(&list1, 3, 100);PrintList(&list1);if (Modify(&list1, 3, 50) == 1) {printf("\n把第三位改成50\n");PrintList(&list1);}if (Delete(&list1, 4, &x) == 1) {printf("\n把第四位删除,删除的值是%d\n",x);PrintList(&list1);}system("pause");return 0; 
}

水平有限,有错希望各位能不吝指出。


http://chatgpt.dhexx.cn/article/ZBsvuMWC.shtml

相关文章

顺序表的实现

目录 1.顺序表的概念 2.静态顺序表 分析&#xff1a; 3.动态顺序表 分析&#xff1a; 4.顺序表初始化 5.顺序表尾部操作 5.1尾插 空间检查函数实现 分析&#xff1a; 5.2尾删 分析&#xff1a; 6.顺序表的头部操作 6.1头插 分析&#xff1a; 6.2头删 分析&…

【C语言】顺序表的创建

一、代码实现部分&#xff1a; 1、顺序表是线性表的基础部分&#xff0c;至于顺序表&#xff0c;在本人看来无异于数组。至于线性表的概念&#xff0c;在此不再赘述。接下来尝试利用C语言对线性表中的顺序表进行代码实现&#xff08;此程序中规定用户输入的数据类型为int类型&a…

顺序表和链表

1.今天给大家介绍线性表中两个常见的结构顺序表和链表&#xff0c;其中链表又包括单链表和带头双向循环链表。 2.此部分的全部代码放在个人gitee中 &#xff0c;需要的自行拿取&#xff0c;前后文件依次对应SeqList SList DList。gitee链接点这里 一、线性表 1.线性表 线性表&…

顺序表的增删查改

数据结构 是数据存储的方式&#xff0c;对于不同的数据我们要采用不同的数据结构。就像交通运输&#xff0c;选用什么交通工具取决于你要运输的是人还是货物&#xff0c;以及它们的数量。 顺序存储结构 包括顺序表、链表、栈和队列等。 例如腾讯QQ中的好友列表&#xff0c;…

顺序表初始化

文章目录 1. 顺序表2. 顺序表的初始化 1. 顺序表 顺序表(顺序存储结构) 存储数据时&#xff0c;会提前申请一整块足够大小的物理空间&#xff0c;然后将数据依次存储到一整块连续的存储空间内&#xff0c;存储时做到数据元素之间不留一丝缝隙。 使用顺序表存储集合 {1,2,3,4,…

顺序表的创建

三个朋友今天全部上岸大厂&#xff0c;祝贺。&#xff08;太羡慕了&#xff09; 静态分配创建一个顺序表&#xff1b; 1.顺序表的定义&#xff1a; #define MaxSize 10 typedef struct {ElemType data[MaxSize];int length; }SqlList;这里我们用结构体的方式定义以一个顺序表…

顺序表的详解

线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串.... 即顺序表为线性表的一种&#xff0c; 顺序表是一种物理地址连续的存储单元依次存储数据元素的线性结构&#…

什么是顺序表

顺序表 在程序中&#xff0c;经常需要将一组&#xff08;通常是同为某个类型的&#xff09;数据元素作为整体管理和使用&#xff0c;需要创建这种元素组&#xff0c;用变量记录它们&#xff0c;传进传出函数等。一组数据中包含的元素个数可能发生变化&#xff08;可以增加或删…

数据结构——顺序表

目录 一. 什么是顺序表&#xff1f; 1&#xff0c;静态顺序表 2&#xff0c;动态顺序表 ①动态顺序表的实现及其初始化 ②空间的创建 ③顺序表的打印和销毁 ④顺序表的尾部插入和删除 ⑤顺序表的头部插入和删除 ⑥顺序表pos位置的插入和删除 ⑦顺序表指定元素的删除 二&am…

【数据结构】——顺序表介绍(独家介绍,小白必看!!)

重点和易错点都用彩笔标记出来了&#xff0c;放心食用&#xff01;&#xff01; 数据结构分为线性表和非线性表&#xff0c;今天我们要学习的顺序表就是线性表中的一个小类。那么&#xff0c;何为线性表&#xff0c;线性表是指n个具有相同性质的数据元素的有限序列&#xff0c…

顺序表详解

目录 一、线性表的概念 二、顺序表 1、顺序表的概念 1&#xff09;. 静态顺序表&#xff1a;使用定长数组存储元素。 2&#xff09;. 动态顺序表&#xff1a;使用动态开辟的数组存储。 三、接口实现 1、创建 2、初始化 3、扩容 4、尾插 5、打印 6、销毁 7、尾删 越界&…

php的strstr是什么意思,php strstr函数怎么用

strstr()函数是PHP中的一个内置函数&#xff0c;语法为strstr(string,search,before_search) &#xff0c;用于搜索字符串在另一字符串中是否存在&#xff0c;如果是&#xff0c;返回该字符串及剩余部分&#xff0c;否则返回 FALSE。此函数区分大小写。 php strstr()函数怎么用…

【数据结构】--- kmp算法和strstr函数

kmp算法和strstr函数 引言一、概念分析分析原理分析 KMP算法原理基本操作图解KMP原理 三、复杂度分析四、KMP算法代码 引言 现实生活中&#xff0c;字符串匹配在很多的应用场景里都有着极其重要的作用&#xff0c;包括生物信息学、信息检索、拼写检查、语言翻译、数据压缩、网…

实现strstr函数

strstr函数的作用是寻找子字符串在目标字符串中第一次出现的位置。 #include <stdio.h> #include<stdlib.h> #include<assert.h> const char * Strstr(const char * str1, const char * str2) {assert(str1 ! NULL);assert(str2 ! NULL);char* cur str1;ch…

字符串函数剖析(3)---strstr函数

1.strstr函数的巧妙 – 查找子字符串 1.1模拟实现strstr函数 strstr函数&#xff1a;在一个字符串中查找子串 学习新函数时&#xff0c;先去c库查找该函数的相关资料&#xff0c;更加助于你的学习 const char * strstr ( const char * str1, const char * str2 );先看函数…

C语言strstr()函数用法-字符串查找

1.函数定义 strstr()函数是一个参数为两个字符指针类型&#xff0c;返回值是char*类型的函数。 用于找到子串&#xff08;str2&#xff09;在一个字符串&#xff08;str1&#xff09;中第一次出现的位置&#xff08;不包括str2的串结束符&#xff09;&#xff0c;并返回该位置…

ConcurrentHashMap 实现原理

一. ConcurrentHashMap 是什么 在并发编程中&#xff0c;ConcurrentHashMap 是一个经常被使用的数据结构&#xff0c;相比于 Hashtable 以及Collections.synchronizedMap() 来说&#xff0c;ConcurrentHashMap 在线程安全的基础上提供了更好的写并发能力&#xff0c;同时还降低…

ConcurrentHashMap 详解

前言 ConcurrentHashMap。 以下的技术点都基于JDK1.8~ 基础回顾 我们都知道&#xff0c;从JDK1.8起&#xff0c;ConcurrentHashMap底层的数据结构就已经从原来的Segment分段锁变为了数组 链表 红黑树的形态。 它是一款并发容器&#xff0c;一款装数据的容器在并发环境下铁…

ConcurrentHashMap介绍

引言 学习ConcurrentHashMap&#xff0c;合理的问题顺序应该如下&#xff1a; ConcurrentHashMap是什么&#xff08;WHAT&#xff09;为什么要有ConcurrentHashMap&#xff08;WHY&#xff09;ConcurrentHashMap的实现原理&#xff08;HOW&#xff09;ConcurrentHashMap如何使…

一文彻底弄懂ConcurrentHashMap

一文彻底弄懂ConcurrentHashMap 导读前言锁synchronizedvolatile&#xff08;非锁&#xff09;自旋锁分段锁ReentrantLockCAS ConcurrentHashMap 实现原理JDK1.7 中的 ConcurrentHashMapSegmentConcurrentHashMap 并发读写的几种情况get 方法put 方法 JDK1.8 中的 ConcurrentHa…