C语言顺序表
顺序表结构可设为一个数组和一个指向尾部的变量,数组用来存放元素,指向尾部的变量在插入元素的时候加一,删除元素的时候减一,始终指向尾部。
typedef int elemtype;
typedef struct arrayList{
elemtype date[MAXSIZE];
int last;
}ArrayList;
初始化时给对应的指针分配空间,并使last=-1
ArrayList *init_ArrayList(){
ArrayList *a = (ArrayList *)malloc(sizeof(ArrayList));
if(a==NULL)
return NULL;
a->last = -;
return a;
}
插入元素:插入位置为x,使>=x的所有元素向后移动一个位置,然后在该位置插入新元素
int insertList(ArrayList *a,elemtype e,int x) {
if(a->last>=MAXSIZE-){
printf("顺序表已满");
return ;
}
//顺序表需要顺序插入,即不能在last外插入
if(x< || x>a->last+){
printf("插入位置错误\n");
return ;
}
int i;
for(i=a->last;i>=x-;i--)//last代表数组最后一个元素的下标
a->date[i+] = a->date[i];//节点依次向后移动一个位置
a->date[i+] = e;
a->last++;
return ;
}
删除元素:使位置x后的所有元素向前移动一个位置
int deleteList(ArrayList *a,int x){
if(x< || x>a->last)
return ;
int i;
for(i=x;i<=a->last;i++)
a->date[i-] = a->date[i];
a->last--;
return ;
}
遍历
void printList(ArrayList *a){
int i;
for(i=;i<=a->last;i++)
printf("%d ",a->date[i]);
}
试运行:
void main(){
ArrayList *init_ArrayList();
int insertList(ArrayList *a,elemtype e,int x);
int deleteList(ArrayList *a,int x);
void printList(ArrayList *a);
ArrayList *arrayList = init_ArrayList();
if(arrayList==NULL){
printf("空间分配失败");
return ;
}
printf("创建成功\n");
insertList(arrayList,,);
insertList(arrayList,,);
insertList(arrayList,,);
insertList(arrayList,,);
insertList(arrayList,,);
deleteList(arrayList,);
printList(arrayList);
}
结果:

对于顺序表查找最为方便快捷:
int getPois(ArrayList *a,elemtype e){//获得位置
int i;
for(i=;i<=a->last;i++){
if(a->date[i]==e)
return i+;
}
return -;
}
elemtype getEle(ArrayList *a,int x){//获得元素
if(x< || x>a->last+)
return -;
return a->date[x-];
}
C语言顺序表的更多相关文章
- C++语言------顺序表实现,用动态数组的方法
C++ 中常用的一些东西,通过使用动态数组来实现顺序表, 掌握了一下知识点: 1.预处理有三中方法 宏定义,文件包含,条件编译 2.使用同名的变量时,可以在外层使用命名空间 类解决变量名重定义的错误 ...
- C语言顺序表的实现
今天本来想写段代码练练手,想法挺好结果,栽了个大跟头,在这个错误上徘徊了4个小时才解决,现在分享出来,给大家提个醒,先贴上代码: /********************************** ...
- C语言——顺序表插入、删除、定位运算算法
说明:将元素x插入到顺序表L的第i个数据元素之前,这个i是从1开始的,但是程序中数组都是从0算起的,不要混淆了. 头文件: header.h // 顺序表的结构定义 #define Maxsize 1 ...
- c语言-顺序表
在数据结构中包含两种,一种线性结构(包括顺序表,链表,栈,队列),一种非线性结构(树,图), 顺序表,其实就是在内存动态数组,Java中的ArrayList就是一个典型的顺序表,它在顺序表的基础上增加 ...
- 数据结构C语言顺序表
#include <stdio.h> #include <stdlib.h> typedef int EmenType; typedef struct Node { int d ...
- 数据结构C语言版--动态顺序表的基本功能实现(二)
/* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...
- C语言实现顺序表
C语言实现顺序表代码 文件SeqList.cpp #pragma warning(disable: 4715) #include"SeqList.h" void ShowSeqLi ...
- 数据结构与算法之顺序表C语言实现
顺序表等相关概念请自行查阅资料,这里主要是实现. 注: 1.顺序表C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简单函数,可自行添加功能: 4.可用C+ ...
- c语言进阶12-线性表之顺序表
一. 线性表的定义 为什么要学习线性表呢? 因为我们日常生活中存在种数据关系,计算机程序是为了解决日常生活的数据关系,因此我们要学习线性表. 线性表是什么呢? 线性表是由n个元素组成的有限序列. 需 ...
随机推荐
- 使用Python批量合并PDF文件(带书签功能)
网上找了几个合并pdf的软件,发现不是很好用,一般都没有添加书签的功能. 又去找了下python合并pdf的脚本,发现也没有添加书签的功能的. 于是自己动手编写了一个小工具,使用了PyPDF2. 下面 ...
- html5shiv.js和respond.js引入不起作用解决
当项目需求需要兼容ie7,8这些奇葩浏览器时,考虑到h5的便捷性及响应式,我们往往引入html5shiv.js和respond.js来让ie7,8兼容h5及一些响应式变化,引入时就需要用到条件注释,原 ...
- [EffectiveC++]item37:绝不重新定义继承而来的缺省参数值
绝不重新定义继承而来的缺省参数值 静态类型 动态类型
- photo的复数是photos
以O结尾的单词变复数时,有生命的加es,无生命的加s. 如:photo,zoo,为无生命的,+s tomato,potato为有生命的,+es. 自己总结的,但到目前为止还没有遇到过例外的.记住这一个 ...
- linux 里的`反引号
Shell中可以将数字或字符直接赋予变量,也可以将Linux命令的执行结果赋予变量,如下: (1) $ count=9 #将数字赋予变量count (2) $ name=" ...
- hdu 6208 The Dominator of Strings【AC自动机】
hdu 6208 The Dominator of Strings[AC自动机] 求一个串包含其他所有串,找出最长串去匹配即可,但是匹配时要对走过的结点标记,不然T死QAQ,,扎心了.. #inclu ...
- Java对象表示方式1:序列化、反序列化的作用
1.序列化是的作用和用途 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存 ...
- bzoj3718 [PA2014]Parking
Description 你的老板命令你将停车场里的车移动成他想要的样子.停车场是一个长条矩形,宽度为w.我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系.停车场很长,我们可以认为它一直向 ...
- springMvc返回Json中自定义日期格式
(一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annotation-driven 2.在依赖管理中添加ja ...
- WK 与 JS 的那些事
苹果在iOS 8中推出了 WKWebView,这是一个高性能的 web 框架,相较于 UIWebView来说,有巨大提升.本文将针对 WKWebView 进行简单介绍,然后介绍下如何和 JS 进行愉快 ...