C语言——顺序表插入、删除、定位运算算法
说明:将元素x插入到顺序表L的第i个数据元素之前,这个i是从1开始的,但是
程序中数组都是从0算起的,不要混淆了。
头文件:
header.h
// 顺序表的结构定义
#define Maxsize 100
//const int Maxsize = 100; // 预先定义一个足够大的常数 typedef struct
{
int data[Maxsize]; // 存放数组的数组
int length; // 顺序表的实际长度
}SeqList; // 顺序表类型名为SeqList // SeqList L 定义L为一个顺序表
主体文件:
main.c
顺序表插入
#include <stdio.h>
#include "header.h" // 顺序表插入运算
void InsertSeqlist(SeqList *L, int x, int i)
{
int j;
if(L->length == Maxsize) printf("表已满");
if(i < || i > L->length + ) printf("位置错"); // 检查插入位置是否合法
for(j = L->length;j >= i;j--)
{
L->data[j] = L->data[j - ]; // 整体依次向后移动
}
L->data[i - ] = x;
L->length++;
} main()
{
int i;
int n = ;
SeqList s = {{,,,,}, n};
InsertSeqlist(&s, , );
for(i = ;i < n + ;i++) {
printf("%d\n", s.data[i]);
}
printf("\n");
}
删除线性表中第i个数据结点
#include <stdio.h>
#include "header.h" // 删除线性表中第i个数据结点
void DeleteSeqList(SeqList *L, int i)
{
int j;
if(i < || i > L->length) printf("非法位置\n");
for(j = i;j < L->length;j++)
{
L->data[j - ] = L->data[j]; // 依次左移
}
L->length--;
} main()
{
int i;
int n = ;
SeqList L = {{,,,,}, n};
DeleteSeqList(&L, );
for(i = ;i < n - ;i++)
{
printf("%d\n", L.data[i]);
}
}
在顺序表中查找值为x的结点
#include <stdio.h>
#include "header.h" // 在顺序表中查找值为x的结点
int LocateSeqList(SeqList L, int x)
{
int i = ;
while(i < L.length && L.data[i] != x) i++;
if(i < L.length) return i + ;
else return ;
} main()
{
SeqList L = {{, , , , }, };
printf("%d\n", LocateSeqList(L, )); //
}
C语言——顺序表插入、删除、定位运算算法的更多相关文章
- C++语言------顺序表实现,用动态数组的方法
C++ 中常用的一些东西,通过使用动态数组来实现顺序表, 掌握了一下知识点: 1.预处理有三中方法 宏定义,文件包含,条件编译 2.使用同名的变量时,可以在外层使用命名空间 类解决变量名重定义的错误 ...
- C语言顺序表的实现
今天本来想写段代码练练手,想法挺好结果,栽了个大跟头,在这个错误上徘徊了4个小时才解决,现在分享出来,给大家提个醒,先贴上代码: /********************************** ...
- C语言顺序表
顺序表结构可设为一个数组和一个指向尾部的变量,数组用来存放元素,指向尾部的变量在插入元素的时候加一,删除元素的时候减一,始终指向尾部. typedef int elemtype; typedef st ...
- c语言-顺序表
在数据结构中包含两种,一种线性结构(包括顺序表,链表,栈,队列),一种非线性结构(树,图), 顺序表,其实就是在内存动态数组,Java中的ArrayList就是一个典型的顺序表,它在顺序表的基础上增加 ...
- 数据结构C语言顺序表
#include <stdio.h> #include <stdlib.h> typedef int EmenType; typedef struct Node { int d ...
- c语言进阶12-线性表之顺序表
一. 线性表的定义 为什么要学习线性表呢? 因为我们日常生活中存在种数据关系,计算机程序是为了解决日常生活的数据关系,因此我们要学习线性表. 线性表是什么呢? 线性表是由n个元素组成的有限序列. 需 ...
- C语言实现顺序表(顺序存储结构)
顺序表(顺序存储结构)及初始化过程详解 顺序表,全名顺序存储结构,是线性表的一种.通过<线性表>一节的学习我们知道,线性表用于存储逻辑关系为"一对一"的数据,顺序表自然 ...
- 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...
- 顺序表应用2:多余元素删除之建表算法(SDUT 3325)
题解: 每次询问一遍,如果已经存在就不用插入表中了. #include <stdio.h> #include <stdlib.h> #include <string.h& ...
随机推荐
- elasticsearch-sql插件
elasticsearch DSL语法有些时候比较难懂换成SQL好处理一些,网上找到一个插件 https://github.com/NLPchina/elasticsearch-sql 安装elast ...
- python高级(一)—— python数据模型(特殊方法)
本文主要内容 collections.namedtuple __getitem__ 和 __len__ __repr__和__str__ __abs__.__add__和__mul__ __bool_ ...
- GTP
GPRS隧道协议(GPRS Turning Protocol) GTP是一个高层协议,位于TCP/IP或UDP/IP等协议上,提供主机间端到端通信, 通过隧道标志(TEI)在路径协议上复用 GTP ...
- spring的总结
1. 第一天 问题:怎样的程序是一个优秀的程序 可维护性好,可扩展性好,性能优秀 问题:业界对象提供什么的概念 高内聚,低耦合,也就是尽量使代码对应的功能写在对应的模块,并且尽量减少类与类之间的关系, ...
- Idea maven编译报错 javacTask: 源发行版 1.8 需要目标发行版 1.8
javacTask: 源发行版 1.8 需要目标发行版 1.8 [INFO] ------------------------------------------------------------- ...
- 关于DES加密之选择更新版
数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的.通常,自动取款 ...
- ngx_echo_module
https://github.com/openresty/echo-nginx-module echo $echo_request_body
- maven打包时跳过测试类
记录 修改pom.xml文件 <project> [...] <build> <plugins> <plugin> <groupId>org ...
- Python数据分析学习之Numpy
Numpy的简单操作 import numpy #导入numpy包 file = numpy.genfromtxt("文件路径",delimiter=" ",d ...
- 卸载oracle10g
网上搜集的.暂时先用着完全卸载Oracle方法:软件环境: 1.Windows XP + Oracle 10g 2.Oracle安装路径为:d:\Oracle 1.如果数据库配置了自动存储管理(ASM ...