鱼C论坛

 找回密码
 立即注册
查看: 404|回复: 9

数组

[复制链接]
发表于 2024-1-8 14:07:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
c数组元素删除怎么实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-1-8 14:08:14 | 显示全部楼层
@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-8 14:08:20 | 显示全部楼层


嗨!欢迎来到FishC的编程问题解答!我是您的计算机教育专家。有什么问题我可以帮您解答呢?

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-8 14:10:34 | 显示全部楼层
FishC 发表于 2024-1-8 14:08
嗨!欢迎来到FishC的编程问题解答!我是您的计算机教育专家。有什么问题我可以帮您解答呢?

以上回 ...

c语言怎么实现数组元素删除
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-8 14:10:52 | 显示全部楼层
timeroom 发表于 2024-01-08 14:10
c语言怎么实现数组元素删除


在C语言中,数组的长度是固定的,一旦声明后就不能直接删除元素。不过,我们可以通过一些操作来实现"删除"元素的效果。有两种常用的方法:

1. 使用标记法:创建一个标记数组,用于标记待删除元素的位置。然后遍历原数组,将不需要删除的元素复制到新数组中。
以下是一个示例代码:

  1. #include <stdio.h>

  2. int main() {
  3.     int arr[5] = {1, 2, 3, 4, 5}; // 原数组
  4.     int marks[5] = {0}; // 标记数组,初始为0代表不删除

  5.     int deleteIndex = 2; // 待删除元素的下标

  6.     // 将待删除元素所在位置的标记设为1
  7.     marks[deleteIndex] = 1;

  8.     // 创建新数组,将不需要删除的元素复制到新数组中
  9.     int newSize = 0;
  10.     for (int i = 0; i < 5; i++) {
  11.         if (marks[i] == 0) {
  12.             arr[newSize] = arr[i];
  13.             newSize++;
  14.         }
  15.     }

  16.     // 输出新数组
  17.     for (int i = 0; i < newSize; i++) {
  18.         printf("%d ", arr[i]);
  19.     }
  20.    
  21.     return 0;
  22. }
复制代码


运行结果为:1 2 4 5

2. 使用指针法:创建一个新的动态数组,将不需要删除的元素复制到新数组中。
以下是一个示例代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main() {
  4.     int *arr = (int*)malloc(5 * sizeof(int)); // 原数组
  5.     arr[0] = 1;
  6.     arr[1] = 2;
  7.     arr[2] = 3;
  8.     arr[3] = 4;
  9.     arr[4] = 5;

  10.     int deleteIndex = 2; // 待删除元素的下标

  11.     // 创建新数组,将不需要删除的元素复制到新数组中
  12.     int *newArr = (int*) malloc(4 * sizeof(int));
  13.     int newSize = 0;
  14.     for (int i = 0; i < 5; i++) {
  15.         if (i != deleteIndex) {
  16.             newArr[newSize] = arr[i];
  17.             newSize++;
  18.         }
  19.     }

  20.     // 输出新数组
  21.     for (int i = 0; i < newSize; i++) {
  22.         printf("%d ", newArr[i]);
  23.     }

  24.     // 释放内存
  25.     free(arr);
  26.     free(newArr);
  27.    
  28.     return 0;
  29. }
复制代码


运行结果为:1 2 4 5

希望这些例子可以帮助到您!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-8 14:11:51 | 显示全部楼层
FishC 发表于 2024-1-8 14:10
在C语言中,数组的长度是固定的,一旦声明后就不能直接删除元素。不过,我们可以通过一些操作来实现"删 ...

java中怎么定义接口
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-8 14:12:00 | 显示全部楼层
timeroom 发表于 2024-01-08 14:11
java中怎么定义接口


在Java中,定义接口使用关键字"interface"。接口是一种抽象的数据类型,用于描述类应该具备哪些方法和属性。接口的定义可以包含方法的签名,但不能包含方法的实现。以下是一个简单的示例代码来演示如何定义接口:

  1. // 定义一个接口
  2. public interface Animal {
  3.     // 接口中的方法默认为 public abstract,可以省略
  4.     void eat();
  5.     void sleep();
  6. }

  7. // 实现接口
  8. public class Dog implements Animal {
  9.     @Override
  10.     public void eat() {
  11.         System.out.println("狗吃骨头");
  12.     }

  13.     @Override
  14.     public void sleep() {
  15.         System.out.println("狗睡觉");
  16.     }
  17. }

  18. // 测试代码
  19. public class Main {
  20.     public static void main(String[] args) {
  21.         Animal dog = new Dog();
  22.         dog.eat();
  23.         dog.sleep();
  24.     }
  25. }
复制代码


运行上述代码,输出结果为:
  1. 狗吃骨头
  2. 狗睡觉
复制代码


在这个例子中,我们定义了一个接口`Animal`,它有两个方法`eat()`和`sleep()`。然后我们定义了一个实现了`Animal`接口的`Dog`类,实现了接口中定义的两个方法。最后,在`main`方法中创建了一个`Dog`对象,并调用了它的`eat()`和`sleep()`方法。

希望这个例子能够帮助你理解如何在Java中定义接口!如有更多问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-8 14:18:09 | 显示全部楼层
FishC 发表于 2024-1-8 14:12
在Java中,定义接口使用关键字"interface"。接口是一种抽象的数据类型,用于描述类应该具备哪些方法和 ...

最小生成树
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-8 14:19:22 | 显示全部楼层


最小生成树(Minimum Spanning Tree,简称MST)是图论中的一个概念,用于描述连通图中连接所有顶点的一棵无环子树,并且使得连接边的权重之和最小。

常见的求解最小生成树的算法有Prim算法和Kruskal算法。

下面以Prim算法为例进行说明。

Prim算法的基本思想是从一个起始顶点开始,逐步扩展生成树,每次选取与当前生成树连接的具有最小权重的边,直到生成树包含了所有顶点。

下面是Prim算法的示例代码:

  1. import sys

  2. class Graph:
  3.     def __init__(self, vertices):
  4.         self.V = vertices
  5.         self.graph = [[0 for _ in range(vertices)] for _ in range(vertices)]

  6.     def printMST(self, parent):
  7.         print("Edge \tWeight")
  8.         for i in range(1, self.V):
  9.             print(parent[i], "-", i, "\t", self.graph[i][parent[i]])

  10.     def minKey(self, key, mstSet):
  11.         min = sys.maxsize
  12.         min_index = -1

  13.         for v in range(self.V):
  14.             if key[v] < min and mstSet[v] == False:
  15.                 min = key[v]
  16.                 min_index = v

  17.         return min_index

  18.     def primMST(self):
  19.         key = [sys.maxsize] * self.V
  20.         parent = [None] * self.V
  21.         key[0] = 0
  22.         mstSet = [False] * self.V

  23.         parent[0] = -1

  24.         for _ in range(self.V):
  25.             u = self.minKey(key, mstSet)
  26.             mstSet[u] = True

  27.             for v in range(self.V):
  28.                 if self.graph[u][v] > 0 and mstSet[v] == False and key[v] > self.graph[u][v]:
  29.                     key[v] = self.graph[u][v]
  30.                     parent[v] = u

  31.         self.printMST(parent)


  32. # 示例图
  33. graph = Graph(5)
  34. graph.graph = [[0, 2, 0, 6, 0],
  35.                [2, 0, 3, 8, 5],
  36.                [0, 3, 0, 0, 7],
  37.                [6, 8, 0, 0, 9],
  38.                [0, 5, 7, 9, 0]]

  39. graph.primMST()
复制代码


运行上述代码,会输出最小生成树的边权重。

希望这个示例能够帮助你理解最小生成树的概念和Prim算法的实现。如有更多问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-8 16:04:07 | 显示全部楼层
编程问题应该发到【技术交流】版块哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 21:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表