2014-10-01 47 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