#华清远见
#牟老师牛逼,作者加油~
#记录与分享一些知识,目前作者也是刚开始学习数据结构这部分,全是干货~
#文章暂时适合于初学者,以后随着作者的进步还会持续分享,希望与大家共勉~
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;
}