往线性表填入数据c语言,【简易C语言数据结构】线性表

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

本文实现了一个简单地线性表,其中只包括,表的建立,元素的插入,删除,以及打印表,初学线性表,代码都通不过的,可以下载下来看看~有什么疑问,BUG,建议,欢迎留言~

为了贴吧保持格式,空格被换成隐藏字符了,想要源代码的,直接下载附件。

#include 

#include 

#define MAX_LIST_SIZE 100

#define OK 1

#define NO 0

typedef struct

{

int *data;

int length;

int listSize;

}LinerList;

int InitList(LinerList *L)

{

//初始化线性表,包括表的最大长度,初始表长度

L->listSize = MAX_LIST_SIZE;

//为L分配能够容纳listSize个int类型数据的空间

L->data = (int*)malloc(sizeof(int) * (L->listSize));

if(!L->data)

return NO;

//初始化表长度为0,很容易忽略

L->length = 0;

return OK;

}

//pos到底是下标还是位置?这个要看自己定义

//这里定义为在第i个位置插入元素,从1开始

int InsertList(LinerList *L, int pos, int e)

{

//满了!让我怎么插入

if(L->length == L->listSize)

return NO;

//只能在第一个位置和最后一个元素后边一个位置之间插入元素

if(pos  L->length + 1)

return NO;

int i = 0;

//从最后一个元素到要插入位置元素,逐个后移

//想清楚为什么是倒着移动

for(i = L->length - 1; i >= pos - 1; --i)

{

L->data[i+1] = L->data[i];

}

//插入元素

L->data[pos - 1] = e;

//很容易忽略,插入一个元素,长度加1

L->length++;

return OK;

}

//打印线性表,没什么可说的

void printList(LinerList *L)

{

int i = 0;

for(i = 0; i length; ++i)

{

printf("%d ",L->data[i]);

}

printf("\n");

return;

}

//删除线性表第pos个元素

int DeleteList(LinerList *L, int pos)

{

//删除位置的判断

if(pos  L->length)

return NO;

int i = 0;

//从删除位置元素开始,把后边元素向前移动一位

//这里是正向移动,想好为什么

for(i = pos - 1; i length - 1; ++i)

{

L->data[i] = L->data[i+1];

}

//长度-1

L->length--;

return OK;

}

int main()

{

//测试

//建立一个线性表,这里如果写成LinerList *l会有错,如果只利用C语言语法

//就会造成这种困扰。

LinerList l;

//所有函数都要传指针,因此是把l的地址传给函数,对指针不熟的,复习一下语言

InitList(&l);

int i = 0;

//插入10个数字

for(i = 0; i < 10; ++i)

{

InsertList(&l, 1, 10 - i);

}

printList(&l);

//删除其中的奇数

for(i = 1; i <= 5; ++i)

{

DeleteList(&l, i);

}

printList(&l);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值