gpt4 book ai didi

c++ - 如何使用链表设置显式值构造函数?

转载 作者:行者123 更新时间:2023-11-28 03:35:49 24 4
gpt4 key购买 nike

对于一个项目,我正在尝试设置一个链表对象,以便可以使用显式值构造函数对其进行初始化。我希望它看起来像这样:

WORD you("you");//where the object you's linked list now contains y o u;

但是当我打印出你这个对象时,我看到的只是这个符号“=”当我打印出你的长度时,我得到 -858993459

这是我的显式值构造函数,有人能告诉我我做错了什么吗?

WORD::WORD(string s)
{
front = 0;
int i = 0;
int len = s.length();

if(front == 0)
{
front = new alpha_numeric;
alpha_numeric *p = front;

while(s[i] <= len)
{
p -> symbol = s[i];
p -> next = new alpha_numeric;
p = p -> next;
p -> symbol = s[i++];
}
p -> next = 0;
}
}

如果有帮助,这里是类声明文件

#include <iostream>
#include <string>

using namespace std;
#pragma once

class alpha_numeric //node
{
public:
char symbol; //data in node
alpha_numeric *next;//points to next node
};

class WORD
{
public:
WORD(); //front of list initially set to Null
WORD(const WORD& other);
WORD(string s); //***EXPLICIT VALUE CONSTRUCTOR
bool IsEmpty(); //done
int Length();
void Add(char); //done
//void Insert(WORD bword, int position);
//void operator=(char *s);

friend ostream & operator<<(ostream & out, const WORD& w);//done

private:
alpha_numeric *front; //points to the front node of a list
int length;
};

最佳答案

你永远不会设置长度,所以这就是为什么它是垃圾。正如 luthien256 ahd LihO 指出的那样,您的 while 循环也是错误的,并且 if (front == 0) 测试没有意义。

最后,不需要 p -> symbol = s[i++];。只需增加 i。

试试这个:

class alpha_numeric //node
{
public:
char symbol; //data in node
alpha_numeric *next;//points to next node
};

class WORD
{
public:
WORD(); //front of list initially set to Null
WORD(const WORD& other);
WORD(string s); //***EXPLICIT VALUE CONSTRUCTOR
bool IsEmpty(); //done
int Length() { return length; }
alpha_numeric *Front() { return front; }
void Add(char); //done
//void Insert(WORD bword, int position);
//void operator=(char *s);

friend ostream & operator<<(ostream & out, const WORD& w);//done

private:
alpha_numeric *front; //points to the front node of a list
int length;
};

WORD::WORD(string s)
{
front = 0;
int i = 0;
int len = s.length();
length = len;
if (length == 0) {
front = NULL;
return;
}
front = new alpha_numeric;
alpha_numeric *p = front;

while(i < len)
{
p -> symbol = s[i];
if (i != len - 1) {
p -> next = new alpha_numeric;
p = p -> next;
}
else
p -> next = NULL;
++i;
}
}


int main() {
WORD you("you");
alpha_numeric* front = you.Front();
while(front != NULL) {
cout<<(front->symbol)<<endl;
front = front->next;
}
cout<<you.Length()<<endl;
return 0;
}

关于c++ - 如何使用链表设置显式值构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10920788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com