#include <stdio.h>
#include <stdlib.h>
#define UINT unsigned int
struct item
{
UINT time ; // time in tics which is used to order the list.
UINT id ; // penguin id number.
UINT event ; // event this item describes.
struct item *next ; // pointer to next item in list.
};
struct item *head=NULL;
struct item *trail=NULL;
void link_list(UINT time, UINT id, UINT event)
{
struct item *t=NULL;
static int i=0;
if(i==0)
{
head->time=time;
head->id=id;
head->event=event;
trail=head;
trail->next=NULL;
i++;
printf("Hello Word\n");
}
t=malloc(sizeof(struct item));
trail->next=t;
trail->time=time;
trail->id=id;
trail->event=event;
trail=t;
trail->next=NULL;
if(i!=0)
printf("I am \n");
}
int main(int argc, char *argv[])
{
UINT x[3]={4,5,7}, y[3]={40,50,60}, z[3]={100,900,500};
int i=0;
head=malloc(sizeof(struct item));
trail=head;
link_list(x[0], y[0], z[0]);
link_list(x[1], y[1], z[1]);
link_list(x[2], y[2], z[2]);
struct item *f=NULL;
f=head;
do
{
printf("trail: %d %d %d\n", f->time, f->id, f->event);
f=f->next;
}
while(f!=NULL);
return 0;
}
再会,
我目前在逻辑上对链表的代码实现存在逻辑问题。这段代码是我用来将它集成到一个更大的程序中的框架,该程序将使用链表,所以我需要把它做好。
基本上发生的事情是,当我最终到达用作调试行的 do while 循环以查看链接列表的内容时,我将在命令行上获得以下输出:
足迹:4 40 100
足迹:5 50 900
足迹:7 60 500
踪迹:0 0 0
我期望输出是这样的:
足迹:4 40 100
足迹:5 50 900
足迹:7 60 500
我已经在我的代码中排除了其他 printf,因为它们只是用来检查我是否确实正确地完成了我的函数。这也可能是无关的,但在 linux 下是否有更好的 c 调试器?因为内置调试器在进入 malloc 命令时会发疯,所以我必须在我的脑海中调试所有程序。:(