数据结构篇-线性结构

#华清远见

#牟老师牛逼,作者加油~

#记录与分享一些知识,目前作者也是刚开始学习数据结构这部分,全是干货~

#文章暂时适合于初学者,以后随着作者的进步还会持续分享,希望与大家共勉~

1 数据结构

目的:为了方便存储数据。

功能:数据结构都是围绕对数据的“增、删、改、查”

2 数据结构的一般形式

线性结构 树形结构 图形结构

3 线性结构

在存储关系中,数据是顺序排列,每个元素最多有一个前驱和一个后继。

以下是线性表-顺序表的封装源码,体现了线性结构存储数据的各种功能。
#include<stdio.h>
#define MAX_DATA_SIZE 100


typedef struct student//顺序表的结构体类型
{
    int data[MAX_DATA_SIZE];//顺序表的存储结构,常见的存储结构是数组和链表
    int size;//表示顺序表的有效数据个数
}List_t;


List_t creatEmptyList()//创建空顺序表函数
{
    List_t list;
    list.size=0;
    return list;//将创建好的结构体变量作为返回值 返回给 主调函数
}


int creatList(List_t*p)//判断顺序表是否为空
{
    return p->size==0;
}


int fullList(List_t*p)//判断顺序表是否满
{
    return p->size==MAX_DATA_SIZE;
}


void clearList(List_t*p)//清除数据
{
    p->size=0;
}


int lengthList(List_t* p)//判断顺序表数据长度
{
    return p->size;
}


int insertList(List_t*p,int pos,int x)//插入数据
{
    if(fullList(p)||pos>p->size||pos<0)
    {
        return -1;
    }
    int i;
    for(i=p->size;i>pos;i--)
    {
        p->data[i]=p->data[i-1];
    }
    p->data[pos]=x;
    p->size++;
}


int deleteList(List_t*p,int pos)
{
    if(pos>p->size-1||pos<0)
    {
        return -1;
    }
    int i;
    for(i=pos;i<p->size-1;i++)
    {
        p->data[i]=p->data[i+1];
    }
    p->size--;
    return 0;
}

void printList(List_t*p)//打印顺序表(存在结构体数组中)
{
    int i;
    for(i=0;i<p->size;i++)
    {
        printf("%d ",p->data[i]);
    }
    printf("\n");
}


int main()
{
    List_t list =creatEmptyList();//创建一个顺序表
    insertList(&list,0,10);
    deleteList(&list,0);
    printList(&list);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值