我想动态创建一个链表,我从屏幕输入一连串字符串(中间不用空格隔开),这一串字符串按照我输入的方式存入链表里面,遇到字符'*'就结束,而输出这些字符。我的代码如下,但是不能运行,请问为什么呢?
#include<iostream.h>
struct bitStruct
{
char bit;
bitStruct* next;
bitStruct(char element,bitStruct* nt=NULL)
{
bit=element;
next=nt;
}
};
void print(bitStruct* Start)
{
bitStruct* temp=Start;
while(Start->next!=NULL)
{
cout<<Start->bit;
Start=Start->next;
}
cout<<Start->bit;
Start=temp;
}
void main()
{
bitStruct* First=NULL;
bitStruct* Rear=First;
if(First==NULL)
{
char temp;
cin>>temp;
First=new bitStruct(temp);
}
while(First!=NULL&&Rear->bit!='*')
{
char temp;
cin>>temp;
bitStruct* nw;
nw=new bitStruct(temp);
Rear->next=nw;
Rear=nw;
}
Rear=First;
print(Rear);
}
參考答案:在main函数中你把"bitStruct* Rear=First; "这条语句放到if语句后面就ok了:
if(First==NULL)
{
char temp;
cin>>temp;
First=new bitStruct(temp);
}
bitStruct* Rear=First;
但是你写的这个程序输入存入链表时是一个一个输入的,中间需要空格或回车.无法达到你的”从屏幕输入一连串字符串(中间不用空格隔开),这一串字符串按照我输入的方式存入链表里面”要求..
你要想”一串字符串按照我输入的方式存入链表里面”的话,需要一个函数来处理一下,类似”词法分析”的,根据”有限自动机”原理,很好写出来的...