2014-10-01 55 views
0

我首先嚐試創建一個節點,但我不確定它是否正確。我很抱歉,我是C++的新手。我不知道如何讓節點p指向鏈表的第一個元素。希望可以提供幫助。由於C++中的鏈表問題

這裏是我的功能:

template<class Type> 
void longestSequence(linkedListType<Type>& list, int& maxCount, Type& value) 
{ 
    nodeType<Type> *p = first; 
    int count = 0; 
    int tempValue = 0; 
    while(p != NULL) 
    { 
     if(p->info == p->link->info) 
     { 
      count++; 
      tempValue = p->info; 
     } 
     p = p->link; 
    } 
    if(count > maxCount) 
    { 
     maxCount = count; 
     value = tempValue; 
    } 
    else if(count == maxCount && tempValue < value) 
    { 
     value = tempValue; 
    } 
} 
+0

你需要檢查'p'和'p-> info'是否爲空,你也許應該檢查那些值是否真的與'value'匹配? – AlexanderBrevig 2014-10-01 03:41:34

+0

感謝您的建議。我會嘗試修改代碼。然而,編譯器不斷顯示錯誤,「第一」不是一個聲明的標識符,我不知道如何解決它 – user2847449 2014-10-01 03:43:59

+0

「我很抱歉,我是新來的C++」 - 這是沒有道理的任何理由。只要不斷學習。 :) – 0x499602D2 2014-10-01 03:52:23

回答

0

你的類linkedListType<Type>應該有一個成員nodeType<Type>* head
當您創建鏈接列表的第一個節點時,應該將其地址分配給head

然後,您可以隨時訪問鏈接列表的第一個節點。
例如,nodeType<Type> *p = list.head

+0

感謝您的回答。首先有一個受保護的節點類型 *。但是當我試圖通過鍵入「nodeType * p = list.first」來訪問它時,編譯器說我不能訪問受保護的變量 – user2847449 2014-10-01 04:03:17

+0

,您有2個選項:'1.'使成員公開。然後你可以訪問它。 '''讓這個成員保密,並定義一個getter函數來訪問它。 – cppcoder 2014-10-01 04:11:28

+0

我很抱歉,我只能在這個特定的功能上工作,而不是添加新的成員函數或更改頭文件。 – user2847449 2014-10-01 04:14:34