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& ...
随机推荐
- urllib和urllib3
urllib库 urllib 是一个用来处理网络请求的python标准库,它包含4个模块. urllib.request---请求模块,用于发起网络请求 urllib.parse---解析模块,用于解 ...
- leetcode 53 最大子序列之和(动态规划)
思路:nums为给定的数组,动态规划: 设 一维数组:dp[i] 表示 以第i个元素为结尾的一段最大子序和. 1)若dp[i-1]小于0,则dp[i]加上前面的任意长度的序列和都会小于nums[i], ...
- 7. JavaScript学习笔记——DOM
7. DOM 7.1 DOM简介 DOM是文档对象模型,HTML文档的所有内容都是节点: 整个文档是一个文档节点 (document 最顶级) HTML元素内的文本是文本节点 每个表面的属性是属性节点 ...
- iOS开发苹果内购的介绍与实现
1.iOS开发苹果内购的介绍 1.1 介绍 苹果规定,凡是虚拟的物品(例如:QQ音乐的乐币)进行交易时,都必须走苹果的内购通道,苹果要收取大约30%的抽成,所以不允许接入第三方的支付方式(微信.支付宝 ...
- js复习知识点
null和undefined具体在什么时候使用? 如果定义的变量准备用来保存对象,那么最好用将改变量初始化为null而不是其他值 如果未定义的值可以用空字符 undefined是null派生出来的,所 ...
- oracle12c之三 控制PDB中CPU 资源使用
CPU资源隔离 数据库中,不同的PDB对主机CPU资源使用要求不同,那么我们就可以使用CDB resourceplans来管理不同pdb对CPU资源的使用. CDB Resource Plans ...
- (转)MySQL Proxy使用
转自: http://www.cnblogs.com/itech/archive/2011/09/22/2185365.html http://koda.iteye.com/blog/788862 h ...
- WEB前端笔记
HTML+CSS部分 IE6使用PNG的透明问题 解决关键字 DD_belatedPNG_0.0.8a.js Google或百度一下,下载之 <!--[if lte IE 6]> < ...
- 手动修改user-agent
1. 在浏览器地址栏输入 about:config.弹出对话框:
- Linux定时增量更新文件--转
http://my.oschina.net/immk/blog/193926 动机与需求:现在有两台服务器A和B,由于A的存储随时会挂(某些原因),所以需要B机器上有A的备份,并且能够与A同步更新 一 ...