【问题标题】:How to insert an element to the heap sort using struct如何使用结构将元素插入堆排序
【发布时间】:2015-12-05 19:29:44
【问题描述】:

这是我作为作业得到的问题。我需要向堆中插入一个元素,并且需要使用以下声明来构建初始堆。

typedef struct {
    int count;
    int entry[MAXLIST];
} LIST;

我也用谷歌搜索过,但由于我不熟悉struct,我无法回答这个问题。请帮我解答。

【问题讨论】:

  • 什么堆?最大堆?最小堆?您标记了堆排序。您需要对堆中的元素进行排序吗?
  • 而不是发布指向struct 教程的链接:您可以轻松找到很多教程。
  • 您的问题不完整。如果没有链接它们的指针,如何插入堆?用整个代码重写您的问题,以便我们为您提供帮助。
  • 您已经拥有足够的代表,应该知道如何创建 MCVE (How to create a Minimal, Complete, and Verifiable Example?)。如果您无法使用结构创建堆,请向我们展示如何在没有结构的情况下进行操作。如果您根本找不到创建堆,请不要在您的问题中引入红鲱鱼。
  • 您可能想研究 J Bentley 的“Programming Pearls”,Addison-Wesley,1986,ISBN 0-201-10331-1,第 12 列“堆”(或第二版中的等价物) .

标签: c struct heapsort


【解决方案1】:

当您寻求帮助时,有很多关于如何使用 C 实现堆的资源和教程。

在 google 中查找:如何在 C 中实现堆数据结构例如,您也可以查看这些链接:

Heap Data Structures -with C Program source code

C Program to Implement a Heap & provide Insertion & Deletion Operation

并尝试指定您的意思是哪种堆。

作为一个建议,先尝试了解数据结构的原理,从链表开始,尝试用 C 实现一个。如果你卡住了,然后问一个明确而具体的问题,我敢肯定很多人都会帮忙的。

【讨论】:

    【解决方案2】:

    如果你想在堆上分配结构写

    LIST* pElement = malloc(sizeof(LIST)); 
    

    pElement 现在指向结构,或者更准确地说,是可以保存结构 LIST 的内存区域。

    当你处理你写的结构中的单个元素时,例如

    pElement->count = 0;
    

    要获得一堆结构,只需通过将结构的大小乘以某个数字来分配更多空间

    LIST* pElement = malloc(sizeof(LIST)*10); // array of 10 structs
    ...
    pElement[5].count = 0;
    

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 2012-11-26
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多