(c语言)王道数据结构链表第一题

1.题目:

2.题目分析:这是一个类似顺序表遍历的问题(删除最小首先得找到最小,找到最小就得遍历顺序表)

3.解答:(个人解答习惯:结构体+算法思想+代码实现)

(1)结构体和相关定义

//定义顺序表最大长度

#define MAXSIZE 100

//定义单个数据类型

typedef int ElemType;

//自定义bool类型

#define bool char

#define true 1

#define false 0

//定义顺序表的结构体(静态分配)

typedef struct{

  ElemType data[MAXSIZE];//用静态数组存放当前数据元素

  int length;//顺序表当前长度

}Sqlist;

(2)算法思想:遍历整个顺序表Sqlist,找出最小值元素的位置,用一个变量x收集该元素位序,搜索结束用最后一个元素data[L.length-1]的值覆盖data[x]的位置,然后把最后一个元素删除(顺序表长度减一)。

(3)代码实现:

bool del_x(Sqlist &L,ElemType &e){

  //1.判断操作位置的合法性:顺序表为空就不合法

  if(L->length<=0){

  printf("当前顺序表为空,删除操作不合法!);

  return false;

 }

  int i,x;//设置一个用于返回最小元素位序的变量x

  e=L.data[0];//将L中的第一个元素的值赋给e

  //2.遍历顺序表L

  for(i=0;i<L->length;i++){

  //如果下一个元素比e小就将下一个元素的值赋给e

   if(L.data[i]<e){

     e=L->data[i];

     x=i;//一直循环直到找到最小元素,将其位序给x

   }

 L.data[x]=L.data[L.length-1];//最后一个元素的值覆盖最小元素data[x]

 L.length--;//删除最后一个元素,顺序表长度减1

return true;

}

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是lethe先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值