顺序表结构可设为一个数组和一个指向尾部的变量,数组用来存放元素,指向尾部的变量在插入元素的时候加一,删除元素的时候减一,始终指向尾部。

 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语言顺序表的更多相关文章

  1. C++语言------顺序表实现,用动态数组的方法

    C++ 中常用的一些东西,通过使用动态数组来实现顺序表, 掌握了一下知识点: 1.预处理有三中方法 宏定义,文件包含,条件编译 2.使用同名的变量时,可以在外层使用命名空间 类解决变量名重定义的错误 ...

  2. C语言顺序表的实现

    今天本来想写段代码练练手,想法挺好结果,栽了个大跟头,在这个错误上徘徊了4个小时才解决,现在分享出来,给大家提个醒,先贴上代码: /********************************** ...

  3. C语言——顺序表插入、删除、定位运算算法

    说明:将元素x插入到顺序表L的第i个数据元素之前,这个i是从1开始的,但是程序中数组都是从0算起的,不要混淆了. 头文件: header.h // 顺序表的结构定义 #define Maxsize 1 ...

  4. c语言-顺序表

    在数据结构中包含两种,一种线性结构(包括顺序表,链表,栈,队列),一种非线性结构(树,图), 顺序表,其实就是在内存动态数组,Java中的ArrayList就是一个典型的顺序表,它在顺序表的基础上增加 ...

  5. 数据结构C语言顺序表

    #include <stdio.h> #include <stdlib.h> typedef int EmenType; typedef struct Node { int d ...

  6. 数据结构C语言版--动态顺序表的基本功能实现(二)

    /* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...

  7. C语言实现顺序表

    C语言实现顺序表代码 文件SeqList.cpp #pragma warning(disable: 4715) #include"SeqList.h" void ShowSeqLi ...

  8. 数据结构与算法之顺序表C语言实现

    顺序表等相关概念请自行查阅资料,这里主要是实现. 注: 1.顺序表C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简单函数,可自行添加功能: 4.可用C+ ...

  9. c语言进阶12-线性表之顺序表

    一.  线性表的定义 为什么要学习线性表呢? 因为我们日常生活中存在种数据关系,计算机程序是为了解决日常生活的数据关系,因此我们要学习线性表. 线性表是什么呢? 线性表是由n个元素组成的有限序列. 需 ...

随机推荐

  1. laravel中delete()方法和destroy()方法的区别

    delete()方法是实例方法,需要查询到相应的数据并通过模型实例调用 destroy()方法可以直接调用,通过索引删除记录 举个栗子: /*delete()方法删除*/ //先查找记录 $blog ...

  2. Anaconda套件,精簡版miniconda

    雖然Anaconda會預先安裝豐富的套件模組,尤其是在數據科學領域方面,有非常豐富的寶藏, 大多範例或教學或許為了節省後續的麻煩,不解釋為什麼,直接就安裝Anaconda 就對了: 但是大部份的模組套 ...

  3. linux 用户切换 标签: linux 2016-07-30 13:57 144人阅读 评论(0) 收藏

    一.指令修改 1.普通用户切换到root用户: su root 需要输入密码 2.root用户切换到普通用户: su 用户名 不需要输入密码 二.直接注销,再用新用户登录 注:1.两种方式存在差别,用 ...

  4. 正则表达式 (python 2)

    Python提供re模块,包含所有正则表达式的功能.由于Python的字符串本身也用\转义,所以要特别注意: s = 'ABC\\-001' # Python的字符串# 对应的正则表达式字符串变成:# ...

  5. 【深入理解JAVA虚拟机】第三部分.虚拟机执行子系统.2.虚拟机类加载机制

    1.概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验. 转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 2.类加载顺序 类从被加载到虚拟 ...

  6. July 15th 2017 Week 28th Saturday

    If I can't hear your heartbeat, you are too far away. 如果我听不见你的心跳,那是因为你离我太远了. Only when the two tight ...

  7. WAS部署 -- SRVE0255E: 尚未定义要处理 /snoop 的 Web 组/虚拟主机

    问题描述: URL:http://localhost:9080/pay: (中文)SRVE0255E: 尚未定义要处理 /snoop 的 Web 组/虚拟主机 访问出现以上错误. 找了很多资料,觉得说 ...

  8. Oracle创建自增序列

    Oracle没有自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 先建一个测试表了: create table userlogin( id   number(6 ...

  9. SOJ4478 Easy Problem II(模拟、栈)

    Time Limit: 3000 MS Memory Limit: 131072 K Description 在数据结构中 我们学习过 栈 这种数据结构 通过栈 我们可以将1,2,3,...,n转化成 ...

  10. UVa 1220 - Party at Hali-Bula(树形DP)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...