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