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

来源:百度知道 编辑:UC知道 时间:2024/08/21 22:41:11
设输入的字符串为',','_',0-9的数字,有如下规则:相邻数字代表一个整数;','隔开的多个整数组成整数序列;'_',代表区间内整数所组成的序列。如“045, 34-35,405-408,00”代表45,34,35,405,406,407,408,0。设计一个链表结构,并 存储整数元素。设计parser(),按上述规则分析字符串,并存储结果在链表中。

高手帮忙!要求写的程序可以运行并输出正确结果,最好能说明原理,非常感谢!

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

#include<iostream.h>
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<m_nLength;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<m_nLength-1;i++)
q=q->next;
q->next=p;
}
else if(m_nLength==1)
m_pHead->next=p;
else
m_pHead=p;
m_nLength++;