2014-10-29 50 views
-2

我有一个实现方法,其中我有一个双向链接列表和每个节点都有的数据。我想返回列表中活动元素的值。返回双向链表中活动元素的值

我的代码是:

void DLCopy (tDLList *L, int *val) { 

tDLElemPtr pointer=NULL; 
    if(L->Act!=NULL) 
    { 
     pointer=(tDLElemPtr) malloc(sizeof(struct tDLElem)); 
     if (pointer == NULL) 
     { 
      pointer->data=val; 
      pointer->rptr = L->Act->rptr; 
      pointer->lptr = L->Act; 
      L->Act->rptr = pointer; 
      L->Act->lptr = NULL; 
     } 
     else 
     { 
      DLError(); 
     } 
    } 

} 

任何想法?

它给了我返回值= -2无论如何。

在此先感谢。

+0

'if(pointer == NULL) { pointer-> data = val;'??? – 2014-10-29 20:26:22

+1

'if(pointer == NULL)' - >'if(pointer!= NULL)' – BLUEPIXY 2014-10-29 20:27:00

+0

这段代码*尝试*做什么(除了不工作)。如果你所做的只是获取活动元素节点的值,几乎所有这些代码都是不必要的,*绝对不需要'malloc'。 – WhozCraig 2014-10-29 20:28:25

回答

0

如果你想一切都是为了让有源元件的价值,它只是似乎是简单的:

void DLCopy (tDLList *L, int *val) 
{ 
    if (L != NULL && L->Act != NULL && val != NULL) 
    { 
     *val = L->Act->data; 
    } 
    else if (val != NULL) 
    { 
     *val = 1234; // Default value if no active element (if desired) 
    } 
} 

注:DLCopy()没有此功能的好名字。

+0

无论如何感谢很多人。 – 2014-10-29 20:47:05