1、数据结构-顺序线性表的实现-C语言

#define MAXSIZE 100

//结构体定义
typedef struct
{
    int *elem;      //基地址
    int length;     //结构体当前长度
    int listsize;   //结构体最大长度
} Sqlist; //结构体类型名

//各项操作
void Show_Help()
{
    printf("1---初始化线性表\n");
    printf("2---销毁线性表\n");
    printf("3---清空线性表\n");
    printf("4---判断线性表是否为空\n");
    printf("5---求线性表长度\n");
    printf("6---获取线性表某位置元素\n");
    printf("7---请输入元素的值,判断其在线性表中是否存在,并返回其下标,不存在则返回0\n");
    printf("8---求直接前驱\n");
    printf("9---求直接后继\n");
    printf("10---在线性表指定位置插入元素\n");
    printf("11---删除线性表指定位置元素\n");
    printf("12---显示线性表全部元素\n");
    printf("13---翻转线性表全部元素\n");
    printf("退出,输入一个负数\n");
}

//初始化线性表
void InitList(Sqlist* L)
{
    L->elem = (int*) malloc(MAXSIZE*sizeof(int));   //给线性表分配初始空间
    if(!(L->elem)){
        printf("分配失败\n");
        return ;
    }
    L->length = 0;
    L->listsize = MAXSIZE;
}

//销毁线性表
void DestroyList(Sqlist* L)
{
    if(L->elem)
        free(L->elem);  //销毁只需释放刚才给基地址分配的空间即可
    L->length = 0;
}

//清空线性表
void ClearList(Sqlist* L)
{
    L->length = 0;
}

//判断线性表是否为空
int ListEmpty(Sqlist L)
{
    if(L.length)
        return 0;
    else
        return 1;
}

//求线性表长度
int ListLength(Sqlist L)
{
    return L.length;
}

//获取线性表某位置元素
void GetElem(Sqlist L,int i,int* e)
{
    e = L.elem[i-1];
}

//请输入元素的值,判断其在线性表中是否存在,并返回其下标,不存在则返回0
int LocateElem(Sqlist L,int e)
{
    int position = 0;
    for(int i=0; i<L.length; i++)
    {
        if(L.elem[i] == e)
        {
            position = i+1;
            break;
        }
    }
    return position;
}

//求直接前驱
void PriorElem(Sqlist L,int cur_e,int* pre_e)
{
    pre_e = L.elem[cur_e-2];
}

//求直接后继
void NextElem(Sqlist L,int cur_e,int* next_e)
{
    next_e = L.elem[cur_e];
}

//在线性表指定位置插入元素
void ListInsert(Sqlist* L,int i,int e)
{
    for(int j=L->length; j>=i; j--)
    {
        L->elem[j] = L->elem[j-1];
    }
    L->elem[i-1] = e;
    L->length++;
}

//删除线性表指定位置元素
void ListDelete(Sqlist* L,int i)
{
    for(int j=i-1; j<L->length-1; j++)
    {
        (*L).elem[j] = (*L).elem[j+1];
    }
    L->length--;
}

//显示线性表全部元素
void TraverList(Sqlist L)
{
    printf("线性表中的元素有:");
    for(int i=0; i<L.length; i++)
    {
        printf("%d   ",L.elem[i]);
    }
    printf("\n");
}

//翻转线性表全部元素
void Flip(Sqlist L)
{
    int num = L.length / 2;
    int* begin = &L.elem[num-1];
    int* end = &L.elem[L.length-num];
    int middle;
    while(num)
    {
        middle = *begin;
        *begin = *end;
        *end = middle;
        num--;
        begin = &L.elem[num-1];
        end = &L.elem[L.length-num];
    }
    printf("翻转成功\n");
}

欢迎转载,转载请标明出处哦

C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作的更多相关文章

  1. c语言数据结构之线性表的顺序存储结构

    线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...

  2. 线性表&amp;顺序线性表

    第二章 线性表 参考文献:[数据结构(C语言版)].严蔚敏 本篇章仅为个人学习数据结构的笔记,不做任何用途. 2.1 线性结构的特点 (1). 存在唯一的一个被称为"第一个"的数据 ...

  3. 【C语言--数据结构】线性顺序表

    线性表的本质: 1.线性表(List)是零个或者多个数据元素的集合: 2.线性表中的数据元素之间是有顺序的: 3.线性表中的数据元素个数是有限的: 4.线性表中的数据元素的类型必须相同: 定义: 线性 ...

  4. 动态分配的顺序线性表的十五种操作—C语言实现

    线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...

  5. 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)

    温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...

  6. Java数据结构之线性表

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  7. 顺序线性表 ---- ArrayList 源码解析及实现原理分析

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7738888.html ------------------------------------ ...

  8. 用C#学习数据结构之线性表

    什么是线性表 线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract),线性结构的特点是结构中的数据元素之间存在一对一的线性关系.这种一对一的关系指的是数据元素之间的位置关 ...

  9. 顺序线性表之大整数求和C++

    顺序线性表之大整数求和 大整数求和伪代码 1.初始化进位标志 flag=0: 2.求大整数 A 和 B 的长度: int aLength = a.GetLength(); int bLength = ...

随机推荐

  1. IOS __ 面试题

    1.下面四种内部排序算法中哪一种在最差的情况下时间复杂度最高:(B) A.快速排序 B.冒泡排序 C.堆排序 D.归并排序   2.Shell中,将command1的输出作为command2的输入应该 ...

  2. winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法

    最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...

  3. wpf button的mouse(leftbutton)down/up,click事件不响应解决办法

    按照WPF的帮助说明,某些控件的路由事件被内部处理了,已经被标记为Handled,自行定义的事件处理代码便不再起作用了,有时候会很郁闷!         不过WPF提供了必要的方法.         ...

  4. Python-Matplotlib安装及简单使用

    在使用NumPy进行学习统计计算时是枯燥的,大量的数据令我们很头疼,所以我们需要把它图形化显示. Matplotlib是一个Python的图形框架,类似于MATLAB和R语言. Matplotlib的 ...

  5. ios读取通讯录信息

    ios读取通讯录信息 (2012-05-22 14:07:11) 标签: ios读取通讯录 it   iphone如许app读取通讯录信息,读取通讯录信息时需要加载AddressBookUI 和Add ...

  6. 某deed笔试题

    1.  删除ra,输入s,然后从前往后扫,遇到直接删除,O(n),算水题吧. 2. 矩阵乘法,看完题,感觉这么简单,估计有什么套路,仔细再读一遍,发现真是水题,50*50*50=125000,在2s时 ...

  7. 【9】了解Bootstrap栅格系统基础案例(4)

    这次我们来说下嵌套列: 为了使用内置的栅格系统将内容再次嵌套,可以通过添加一个新的 .row 元素和一系列 .col-sm-* 元素到已经存在的 .col-sm-* 元素内.被嵌套的行(row)所包含 ...

  8. Jquery CheckBox复选框 全选/取消全选 最佳实现方式 参考案例

    <input id="chkAll" type="checkbox" />全选/取消全选</div> <asp:Repeater ...

  9. 并发编程(三):全视角解析volatile

    一.目录 1.引入话题-发散思考 2.volatile深度解析 3.解决volatile原子性问题 4.volatile应用场景 二.引入话题-发散思考 public class T1 { /*vol ...

  10. win7 中如何设置eclipse的背景色--Console

    http://blog.csdn.net/u013161399/article/details/47297781