C ++ вопрос здесь. Я успешно (после некоторых исследований: P) создал реализацию связанного списка для стека целых. У меня возникли проблемы с его изменением для char *, хотя ...
Я думаю, что это может быть просто проблема со ссылками / разыменованием указателей относительно функций, используемых классом linklistCommands, который я определил ниже. (У меня всегда были проблемы с пониманием, когда использовать & или * по отношению к аргументам и возвращаемым значениям.) Я прокомментировал строки в своем коде, которые, вероятно, запутались.
В любом случае, вот мой код:
struct linkc { // one 'link', stores a pointer to a char array
char * value;
linkc *next;
};
class linklistCommands
{
public:
linklistCommands()
{top = NULL;}
~linklistCommands()
{}
void push(char * address) // Pretty sure I'm OK here.
{
linkc *temp = new linkc;
temp->value = address;
temp->next = top;
top = temp;
}
char* pop() // Pretty sure I have to change something on this line
{
if (top == NULL)
return 0;
linkc * temp;
temp = top;
char * value;
value = temp->value;
top = temp->next;
delete temp;
return value;
}
bool isEmpty()
{
if (top == NULL)
return 1;
return 0;
}
private:
linkc *top;
};
int main(void)
{
// pushed strings are of an arbitrary, but always known, length
char[4] stringA = "foo";
char[6] stringB = "fooba";
char[8] stringC = "foobar ";
linklistCommands commandList;
commandList.push(stringA);
commandList.push(stringB);
commandList.push(stringC);
while(commandList.isEmpty!=1)
{
cout << (*commandList.pop()) << endl;
}
}
Спасибо за чтение моего вопроса и / или любых разъяснений, которые вы можете предоставить:)