C语言删除顺序表中的最小值,请写一算法,从顺序表中删除具有最小值的元素并由函数返回被删元素的值。...

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

clf402

推荐于 2018.03.29

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:47%    等级:8

已帮助:713人

我给你一个吧,我运行了的,没有问题。

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#define initsize 100

typedef int Datatype;

typedef struct {

Datatype *data;

int n; //当前长度;

int maxsize; //最大容量;

}seqlist;

void Init(seqlist *L)

{

L->data = (Datatype *)malloc(sizeof(Datatype)*initsize); //动态分配;

L->n = 0;

L->maxsize = initsize;

}

void creat(seqlist *L, int n)

{

for (int i = 0; i < n; i++)

{

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

L->n=n;

}

}

void removemin(seqlist *L,int*count)

{

int i, pos = 0;

for (i = 2; i <=L->n; i++)

{

if (L->data[i - 1]data[pos])

pos = i - 1;

}

*count = L->data[pos];

L->n--;

L->data[pos] = L->data[L->n];

}

void show(seqlist L)

{

for (int i = 0; i < L.n; i++)

{

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

}

}

void main()

{

int n,back;

seqlist L ;

Init(&L);

printf("请输入你想创建的长度:");

scanf("%d", &n);

printf("请输入初始值:");

creat(&L,n);

printf("你创建的顺序表是:\n");

show(L);

removemin(&L, &back);

printf("\n最小值为:%d", back);

printf("\n删除后的顺序表是:\n");

show(L);

system("pause");

}

00分享举报

C语言,要实现顺序表最大最小值交换的功能,我们可以先遍历一次顺序表,找到最大最小值的位置,然后再进行一次遍历,将这两个位置上的元素进行交换。下面是一个简单的算法实现: 1. 定义一个顺序表结构体,包含数据数组和长度。 2. 初始化顺序表。 3. 实现查找最大最小值位置的函数。 4. 实现交换两个元素位置的函数。 5. 在主函数调用以上函数,完成最大最小值的交换。 ```c #include <stdio.h> // 定义顺序表的结构体 typedef struct { int *data; // 数据数组 int length; // 顺序表长度 } SeqList; // 初始化顺序表 void InitList(SeqList *L, int capacity) { L->data = (int *)malloc(sizeof(int) * capacity); L->length = 0; } // 查找最小值的位置 int FindMinIndex(SeqList L) { int minIndex = 0; for (int i = 1; i < L.length; i++) { if (L.data[i] < L.data[minIndex]) { minIndex = i; } } return minIndex; } // 查找最大的位置 int FindMaxIndex(SeqList L) { int maxIndex = 0; for (int i = 1; i < L.length; i++) { if (L.data[i] > L.data[maxIndex]) { maxIndex = i; } } return maxIndex; } // 交换两个位置的元素 void SwapElements(SeqList *L, int pos1, int pos2) { int temp = L->data[pos1]; L->data[pos1] = L->data[pos2]; L->data[pos2] = temp; } // 主函数 int main() { SeqList L; InitList(&L, 10); // 假设顺序表最大容量为10 // 添加元素顺序表 // ... // 找到最大最小值的索引 int minIndex = FindMinIndex(L); int maxIndex = FindMaxIndex(L); // 交换最大最小值 SwapElements(&L, minIndex, maxIndex); // 打印交换后的顺序表 // ... // 释放顺序表的内存 free(L.data); return 0; } ``` 在上述代码,我们首先定义了一个顺序表结构体,然后通过`InitList`函数进行初始化。通过`FindMinIndex`和`FindMaxIndex`函数找到最小值和最大的位置,然后通过`SwapElements`函数进行交换。最后,在主函数调用这些函数完成任务。 注意,以上代码是一个简单的示例,实际使用时需要根据具体情况添加元素顺序表、打印顺序表函数以及适当处理边界条件和错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值