- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个程序,可以用 C 语言创建、插入、删除和销毁优先级队列。一切正常,但我有一个任务是让用户更轻松地创建队列。
int Error;
PrQueue* q1= create(&Error);
PrQueue* q2 = create(&Error);
PrQueue* q3 = create(&Error);
这是我创建优先级队列的方法。
PrQueue* create(int* Error)
{
PrQueue* Meta = (PrQueue*)malloc(sizeof(PrQueue));
if(Meta == NULL)
{
*Error = 1;
return NULL;
}
Meta->NrOfItems = 0;
Meta->Head = NULL;
*Error = 0;
return Meta;
}
这就是函数
typedef struct Element
{
int Data;
int Priority;
struct Element *Next;
struct Element *Prev;
} Element;
typedef struct
{
int NrOfItems;
struct Element *Head;
} PrQueue;
这就是结构。所有这些代码部分都位于不同的文件中。第一个是 main.c ,第二个是functions.c,第三个是 .h 头文件。所以我需要的是以某种方式让用户更容易在 main 中创建优先级队列,我应该以某种方式摆脱 main 中的指针符号。我真的不知道它应该是什么样子,但据我了解它不应该在 main 中使用 * 。有什么想法我应该改变什么以及如何改变?
谢谢!
最佳答案
我的建议是将 create()
函数转换为 init()
函数;这将允许用户在其他对象内和/或堆栈上创建 PrQueue
对象,而不仅仅是在堆上:
void init(PrQueue * Meta)
{
Meta->NrOfItems = 0;
Meta->Head = NULL;
}
这也意味着该功能不可能失败,因此用户不必进行任何错误检查。
用户可以这样使用它:
int main(int argc, char ** argv)
{
PrQueue q;
init(&q);
[...]
}
关于c - 需要更改哪些内容才能使我的 C 程序更加用户友好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54842596/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
我正在寻找清理 Grails Controller 代码的方法。在各种 Controller 中我或多或少有相同的逻辑.. 获取对象 检查是否存在 等等.. 是否有建议的方法可以使 Controlle
我真的很喜欢 PHP,因为: _ 易于开发 Web 应用程序(您可以在 10 分钟内设置 LAMP,然后就可以开始了) _ 简单易学 _ 易于部署(您只需要带有 PHP 模块的 Apache) 我真的
我正在尝试使用 mod_rewrite 将我的博客 URL 转换为更适合 SEO 的格式。我所有的文章都存储在一个简单的 MySQL 数据库中。每个博客文章的网址如下所示: http://www.te
我是一名优秀的程序员,十分优秀!