问题列表 - 第40405页

实现链表的两种方法:哪种更好?

我通常知道在C中设计通用链表数据结构的两种方法.我想知道哪个更好.在提出问题之前,我将简要介绍这两种方法:

一种方法是围绕如下结构构建函数:

struct list_element {
    struct list_element *prev;
    struct list_element *next;
    void *data;
};
Run Code Online (Sandbox Code Playgroud)

显然,数据指针指向有效负载.list元素struct在有效负载之外.这就是glib如何设计其双链表设施:http://library.gnome.org/devel/glib/2.26/glib-Doubly-Linked-Lists.html

另一种方法是在Linux内核中完成它的方式:http://isis.poly.edu/kulesh/stuff/src/klist/.list元素结构中没有指向有效负载的void指针.相反,list元素struct包含在payload结构中:

struct list_element {
    struct list_element *prev;
    struct list_element *next;
};

struct person {
    char name[20];
    unsigned int age;
    struct list_element list_entry;
};
Run Code Online (Sandbox Code Playgroud)

一个特殊的宏用于获取指向有效负载结构的指针,给定指向list_entry的指针,其名称包含有效负载结构和有效负载结构的类型(list_entry()宏).

最后,问题是:构建链表的两种方法的后者有什么优势?有几次我听说有人说第二种比第一种更"通用",但为什么呢?我甚至认为第一种方法更通用,因为有效负载结构与列表实现无关,而第二种方法则不然.
第二种方法的另一个缺点是如果要将有效负载放在多个列表中,则应该为有效负载结构中的每个列表设置struct list_element成员.

编辑:总结到目前为止,我看到了两个对我来说很重要的答案:

  • 使用第一种方法:从列表中删除有效负载涉及循环遍历完整列表,直到找到指向有效负载的列表元素.您不需要使用第二种方法执行此操作.(Patrick的答案)
  • 使用第一种方法,您必须为每个元素执行两个malloc():一个用于有效负载,另一个用于list元素struct.使用第二种方法,一个malloc()就足够了.(罗迪的回答)

c linked-list

9
推荐指数
2
解决办法
4192
查看次数

在xcode中使用%运算符

我正在尝试创建一个在目标c中使用%运算符的函数我的函数是:

-(void) image1:(UIImageView *)img1 
        image10:(UIImageView *)img10 
        image100:(UIImageView *)img100 
        score:(NSInteger *)sc
{
        NSInteger* s100,s10,s1;

    s100 = sc % 100;
    s10 = (sc - s100 * 100) % 10;
    s1 = (sc - sc % 10);
    NSLog(@"%d",s1);
}
Run Code Online (Sandbox Code Playgroud)

但我有错误..你能指导我一些解决方案

iphone math xcode objective-c

0
推荐指数
1
解决办法
4737
查看次数

用Git移动子模块

有没有办法移动超级项目中的子模块而不先删除它们并重新添加它们?

git move git-submodules

9
推荐指数
1
解决办法
4525
查看次数

Ant目标将目录移出另一个目录


如何使用Ant任务将目录移动到一个目录?

我的目录结构如下:

my/directory/root
               |-dir1/one/same/lib
               |-dir2/two/same/lib
               |-dir3/three/same/lib
               |-dir4/four/same/lib
Run Code Online (Sandbox Code Playgroud)

我想移动并缩放文件夹"same/lib"并将其移动到"my/directory/root"
(最后:my/directory/root/same/lib)

java ant task

6
推荐指数
1
解决办法
3126
查看次数

了解SQL事件探查器中的读/写次数

替代文字

请参见此SQL Profiler视图中指示的SQL语句.所有这些事件都来自一台忙于长时间运行的客户端机器,工作了几千行.每行处理大约需要6.5秒,这就是SQL事件探查器显示为注销之间的时间,即使实际更新语句只需要1毫秒.每次登录/注销都使用相同的SPID.在任何给定的Login和Logout事件之间看到,SQL语句指示读取计数为17且写入计数为0.然而,Logout事件表示总读取计数超过2百万且写入计数超过10k.我需要进行哪些事件来进行分析以试图找出导致这些读/写的语句,因为我怀疑那些是导致6.5秒延迟的那些,但我可以'

sql-server

7
推荐指数
1
解决办法
9627
查看次数

用逗号作为小数分隔符的parseDouble的最佳方法是什么?

以下是导致Exception:

String p="1,234";
Double d=Double.valueOf(p); 
System.out.println(d);
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来解析"1,234"得到1.234:p = p.replaceAll(",",".");

java

137
推荐指数
5
解决办法
16万
查看次数

如何按字母顺序比较Actionscript 3中的两个字符串

我在C++中使用了strcmp(x,y).你知道如何在as3中做到这一点吗?

谢谢!

flash actionscript-3

4
推荐指数
2
解决办法
1万
查看次数

凹面和凸面多边形

如何识别和删除图像中绘制的四个RED点 替代文字

这四个点使该多边形成为凹多边形,这就是我想要删除它的原因.

我的目标是通过识别和删除这些点来删除这种点,从而将凹多边形转换为凸面.

有没有办法识别和删除这些点?

谢谢

math

8
推荐指数
1
解决办法
4556
查看次数

将重点放在ControlTemplate中的控件上(第2部分)

我对那些肯定是最常见的WPF要求之一感到困惑.我已经阅读了这个问题但是我的解决方案的实现不起作用.

这是无视控件的标记:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:WpfTest">
  <Style TargetType="{x:Type local:CustomControl}">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type local:CustomControl}">
          <Border>
            <TextBox x:Name="myTextBox" />
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="IsFocused"
                     Value="True">
              <Setter Property="FocusManager.FocusedElement"
                      Value="{Binding ElementName=myTextBox}" />
              <Setter TargetName="myTextBox"
                      Property="Background"
                      Value="Green" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

这是包含CustomControl实例的Window的标记:

<Window x:Class="WpfTest.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfTest"
        Title="Window1" Height="300" Width="300">

  <local:CustomControl x:Name="CCtl" />
</Window>
Run Code Online (Sandbox Code Playgroud)

这是代码隐藏的代码:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        Loaded += (RoutedEventHandler)delegate { CCtl.Focus(); };
    }
}
Run Code Online (Sandbox Code Playgroud)

加载Window1时,文本框变为绿色(表示触发器有效)但焦点仍然是CCtl而不是文本框.毫无疑问,这与显示以下数据错误的输出有关:

无法找到引用'ElementName = myTextBox'的绑定源.BindingExpression …

wpf xaml focus controltemplate focusmanager

12
推荐指数
1
解决办法
7453
查看次数

仅为Rake任务运行初始化程序

我想在执行Rake任务时运行某个初始化程序,但在运行Rails服务器时则不行.

区分Rake调用和服务器调用的最佳方法是什么?

rake ruby-on-rails

5
推荐指数
1
解决办法
2165
查看次数