我通常知道在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成员.
编辑:总结到目前为止,我看到了两个对我来说很重要的答案:
我正在尝试创建一个在目标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)
但我有错误..你能指导我一些解决方案
如何使用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)

请参见此SQL Profiler视图中指示的SQL语句.所有这些事件都来自一台忙于长时间运行的客户端机器,工作了几千行.每行处理大约需要6.5秒,这就是SQL事件探查器显示为注销之间的时间,即使实际更新语句只需要1毫秒.每次登录/注销都使用相同的SPID.在任何给定的Login和Logout事件之间看到,SQL语句指示读取计数为17且写入计数为0.然而,Logout事件表示总读取计数超过2百万且写入计数超过10k.我需要进行哪些事件来进行分析以试图找出导致这些读/写的语句,因为我怀疑那些是导致6.5秒延迟的那些,但我可以'
以下是导致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(",",".");?
我在C++中使用了strcmp(x,y).你知道如何在as3中做到这一点吗?
谢谢!
如何识别和删除图像中绘制的四个RED点

这四个点使该多边形成为凹多边形,这就是我想要删除它的原因.
我的目标是通过识别和删除这些点来删除这种点,从而将凹多边形转换为凸面.
有没有办法识别和删除这些点?
谢谢
我对那些肯定是最常见的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 …
我想在执行Rake任务时运行某个初始化程序,但在运行Rails服务器时则不行.
区分Rake调用和服务器调用的最佳方法是什么?
java ×2
math ×2
ant ×1
c ×1
flash ×1
focus ×1
focusmanager ×1
git ×1
iphone ×1
linked-list ×1
move ×1
objective-c ×1
rake ×1
sql-server ×1
task ×1
wpf ×1
xaml ×1
xcode ×1