读书人

双向链表赋值有关问题

发布时间: 2013-11-01 14:43:02 作者: rapoo

双向链表赋值问题
//文件项
typedef struct tagFILE_ITEM
{
char* name;
__u32 attr_ext;
__u64 size;
struct tagFILE_ITEM *prev;
struct tagFILE_ITEM *next;
}FILE_ITEM_T;

typedef FILE_ITEM_T** FILE_ITEM_MAP_T;

//文件列表
typedef struct tagFILE_LIST
{
char Dir[MAX_PATH_LEN];
__u32 TotalItem;
FILE_ITEM_T *ListHeader;
FILE_ITEM_T *CurItem;
struct tagFILE_LIST *Parent;
struct tagFILE_LIST *Child;
}FILE_LIST_T;




FILE_LIST_T * pList = NULL, *p, *q, *s1, *s2, *s3, *s4, *s;

以下这样赋值可以,有正确的输出结果
s1->CurItem = s1->CurItem->next;
eLIBs_printf(".............insert sort.2.........%s....\n", s1->CurItem->name);


以下这样赋值不行,为什么?
s2->CurItem = s1->CurItem->next;
eLIBs_printf(".............insert sort.2.........%s....\n", s2->CurItem->name);

[解决办法]
如果你想的是把s1->CurItem->next的地址值赋值给s2->CurItem 的话!这样没有问题!
如果是实际地址上的值的话,就不行!
[解决办法]
代码没贴,看不出为什么!
语法没问题,s1, s2,在帖子里看不出有没有初始化。
[解决办法]
语法上没有问题。

引用:
//文件项
typedef struct tagFILE_ITEM
{
char* name;
__u32 attr_ext;
__u64 size;
struct tagFILE_ITEM *prev;
struct tagFILE_ITEM *next;
}FILE_ITEM_T;

typedef FILE_ITEM_T** FILE_ITEM_MAP_T;

//文件列表
typedef struct tagFILE_LIST
{
char Dir[MAX_PATH_LEN];
__u32 TotalItem;
FILE_ITEM_T *ListHeader;
FILE_ITEM_T *CurItem;
struct tagFILE_LIST *Parent;
struct tagFILE_LIST *Child;
}FILE_LIST_T;




FILE_LIST_T * pList = NULL, *p, *q, *s1, *s2, *s3, *s4, *s;

以下这样赋值可以,有正确的输出结果
s1->CurItem = s1->CurItem->next;
eLIBs_printf(".............insert sort.2.........%s....\n", s1->CurItem->name);


以下这样赋值不行,为什么?
s2->CurItem = s1->CurItem->next;
eLIBs_printf(".............insert sort.2.........%s....\n", s2->CurItem->name);

读书人网 >C语言

热点推荐