c语言中线性表的概念,线性表的概念与实现--顺序存储( 数组 )C语言

#includestruct list* Makelist();

void Addlist(list* L,int data,int insert);

struct list

{

int data[10];

int last;

};

int main()

{

list* L;

int data;

int insert;

L = Makelist();

scanf("%d",&data);

scanf("%d",&insert);

Addlist(L,data,insert);

printf("%d\n",L->last);

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

return 0;

}

//存在问题:

//新建一个顺序线性表时,不存在元素所以LAST指向-1,但是从0位置插入元素后,LAST的指向并没有改变,并且DATA[LAST]的值并不存在;

struct list* Makelist()

{

list* L;

L = (struct list *)malloc(sizeof(struct list));

L->last = -1;

return L;

}

void Addlist(list* L,int data,int insert)

{

int i;

if (L->last>=10)

{

printf("表已满");

return ;

}

if ( insert<0 || insert>L->last+1 )

{ /* 检查插入位置的合法性 */

printf("位置不合法");

return ;

}

for (i = L->last; i>=insert-1; i--) //在这里存在问题

{//问题解决:出现在insert,因为insert要插的位置是0前面,而此时的线性表中没有元素,last指向-1,所以要把

L->data[i+1] = L->data[i];//insert-1,从这个元素开始之后的每一个元素都要往后移动,给新插入的元素一个位置,就是insert的位置.

L->data[insert] = data;

L->last++;

return ;

}

}

//已解决

void Delete(list* L,int del)

{

int i;

if (del<0||del>L->last+1)

{

printf("yi man");

return ;

}

for(i = del+1; i<10; i++)

{

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

L->last--;

}

}

//还缺一个查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值