C⼀C++高手快来,求助一道编程题!

2025-02-26 04:58:27
推荐回答(3个)
回答1:

//C++,VC6.0上编译通过符合要求,控制台,如果有什么问题请留言
//对了 输入标点要是英文的

#include
struct Elem // 结点类型
{
int data;
Elem*next;
};
class List // 建立链表类
{
Elem * m_pHead;
int m_nLength;
public:
List();
~List();
void Append(int a); // 添加到链表尾
void Print(); // 输出链表
};
List::List()
{
m_pHead=NULL;
m_nLength=0;
}
List::~List()
{
if(m_nLength!=0)
{
Elem*p=m_pHead,*q;
for(int i=0;i {
q=p->next;
delete p;
p=q;
}
}
}
void List::Append(int a)
{
Elem *p=new Elem;
p->data=a;
p->next=NULL;
if(m_nLength>=2)
{
Elem *q=m_pHead;
for(int i=0;i q=q->next;
q->next=p;
}
else if(m_nLength==1)
m_pHead->next=p;
else
m_pHead=p;
m_nLength++;
}
void List::Print()
{
Elem*p=m_pHead;
for(int i=0;i {
cout<data;
if(i!=m_nLength-1)
cout<<',';
p=p->next;
}
cout<}

void parser(char *s,List &A)
{
int num[2]={0};
int i=0;
while(*s!='\0')
{
if(*s!=','&&*s!='-')
num[i]=num[i]*10+(int)(*s-'0');
else if(*s==',')
{
if(i==0)
{
A.Append(num[0]);
num[0]=0;
}
else
{
if(num[0]<=num[1])
{
for(int j=num[0];j<=num[1];j++)
A.Append(j);
}
else
{
for(int j=num[0];j>=num[1];j--)
A.Append(j);
}
num[0]=num[1]=0;
i=0;
}
}
else
i++;
s++;
}
if(i==0)
{
A.Append(num[0]);
num[0]=0;
}
else
{
if(num[0]<=num[1])
{
for(int j=num[0];j<=num[1];j++)
A.Append(j);
}
else
{
for(int j=num[0];j>=num[1];j--)
A.Append(j);
}
num[0]=num[1]=0;
i=0;
}
}

void main()
{
char s[100]={'\0'};
List list;
cout<<"输入的字符串为',','_',0-9的数字."< <<"有如下规则:相邻数字代表一个整数;','隔开的多个整数组成整数序列;'-',代表区间内整数所组成的序列。"
< cin>>s;
parser(s,list);
list.Print();
}

回答2:

#include
using namespace std;
struct Elem // 结点类型
{
int data;
Elem*next;
};
class List // 建立链表类
{
Elem * m_pHead;
int m_nLength;
public:
List();
~List();
void Append(int a); // 添加到链表尾
void Print(); // 输出链表
};
List::List()
{
m_pHead=NULL;
m_nLength=0;
}
List::~List()
{
if(m_nLength!=0)
{
Elem*p=m_pHead,*q;
for(int i=0;i{
q=p->next;
delete p;
p=q;
}
}
}
void List::Append(int a)
{
Elem *p=new Elem;
p->data=a;
p->next=NULL;
if(m_nLength>=2)
{
Elem *q=m_pHead;
for(int i=0;iq=q->next;
q->next=p;
}
else if(m_nLength==1)
m_pHead->next=p;
else
m_pHead=p;
m_nLength++;
}
void List::Print()
{
Elem*p=m_pHead;
for(int i=0;i{
cout<data;
if(i!=m_nLength-1)
cout<<',';
p=p->next;
}
cout<}

void parser(char *s,List &A)
{
int num[2]={0};
int i=0;
while(*s!='\0')
{
if(*s!=','&&*s!='-')
num[i]=num[i]*10+(int)(*s-'0');
else if(*s==',')
{
if(i==0)
{
A.Append(num[0]);
num[0]=0;
}
else
{
if(num[0]<=num[1])
{
for(int j=num[0];j<=num[1];j++)
A.Append(j);
}
else
{
for(int j=num[0];j>=num[1];j--)
A.Append(j);
}
num[0]=num[1]=0;
i=0;
}
}
else
i++;
s++;
}
if(i==0)
{
A.Append(num[0]);
num[0]=0;
}
else
{
if(num[0]<=num[1])
{
for(int j=num[0];j<=num[1];j++)
A.Append(j);
}
else
{
for(int j=num[0];j>=num[1];j--)
A.Append(j);
}
num[0]=num[1]=0;
i=0;
}
}

void main()
{
char s[100]={'\0'};
List list;
cout<<"输入的字符串为',','_',0-9的数字."<<<"有如下规则:相邻数字代表一个整数;','隔开的多个整数组成整数序列;'-',代表区间内整数所组成的序列。"
<cin>>s;
parser(s,list);
list.Print();
}

回答3:

一楼的解释哈原理三!parser()函数是怎么来得?