我没有为输入5x ^ 7的链接列表分配值。
链接列表节点值; nodeValue1 = 5,nodeValue2 = x,nodeValue3 = 7.
表达式:字符串下标超出范围 行:1441
功能:链接列表写
nocomma(2015)
Aktar函数//指定多项式链表。
template <typename T>
void write(node<T>*front, const string &seperator="---->"){
node <T>*curr;
curr=front;
while(curr!=NULL){
cout<<curr->nodeValue1<<" "<<curr->nodeValue2<<" "<<curr->nodeValue3;
curr=curr->next;
if(curr!=NULL)
cout<<" "<<seperator;
}
}
//主
void Aktar(string s){
int i=0,katsayi,derece;
string kat,us;
node <char>*front=NULL,*newNode;
while(s[i]!='\0'){
while(s[i]!='x'){
kat+=s[i];
i++;
}
if(s[i]=='x' && s[i+1]!='^')
us='1';
i++;//^ geçmesi için
while(s[i]=='^'){
us+=s[i+1];
i++;
if(s[i]=='-' || s[i]=='+')
break;
}
katsayi=atoi(&kat[0]);
derece=atoi(&us[0]);
newNode=new node<char>(katsayi,'x',derece,front);
front=newNode;
katsayi=0;
derece=0;
kat=' ';
us=' ';
}
write(front);
}
答案 0 :(得分:0)
首先,您应该不对'\0'
使用std::string
进行比较。这些对象碰巧是空终止的,但这主要是允许与C API交互的黑客攻击。比较一个索引与s.size()
或就迭代器而言,你会好得多。
你的实际问题可能是第一个嵌套循环(实际上,第二个嵌套循环有同样的问题)试图找到一个'x'
字符:一旦输入外部while
,代码就会继续寻找对于'x'
而没有任何注意字符串的大小。它最终会触发调试异常,例如i == s.size()
。