函数题:解压字符串并创建链表
从键盘读入一个由若干个字符串压缩后形成的压缩字符串,每个字符串由数字加其他字符构成,其中的数字代表后面字符串重复次数(例如:4ab3F1d* 表示对应的3个字符串分别是:abababab,FFF,d*)。要求编程实现:将读入的压缩字符串解压后依次存放到链表结点中,存入的规则是:如果解压得到的字符串是新串,则插入到链表表头位置;如果链表中已经存在相同的字符串,则将该字符串的结点插入到旧字符串结点相邻位置。
### 函数接口定义:
c++
struct DATA* UnZipStrToChain( char* p);
函数实现根据一个压缩字符串,进行字符串解压,创建链表,并返回链表头指针
### 裁判测试程序样例:
c++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXS 10000
struct DATA* UnZipStrToChain( char* p);
void PrintChain(struct DATA* p);
struct DATA
{
char str[MAXS];
struct DATA* next;
};
void PrintChain(struct DATA* p)
{
while(p!=NULL)
{
printf("%s\n",p->str);
p=p->next;
}
}
int main()
{
char Str[100];
struct DATA* head;
scanf("%s",Str);
head=UnZipStrToChain(Str);
PrintChain(head);
return 0;
}
/* 请在这里填写答案 */
### 输入样例:
in
1ab2cd1ab2ef
### 输出样例:
out
efef
cdcd
ab
ab
答案:若无答案欢迎评论
### 函数接口定义:
c++
struct DATA* UnZipStrToChain( char* p);
函数实现根据一个压缩字符串,进行字符串解压,创建链表,并返回链表头指针
### 裁判测试程序样例:
c++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXS 10000
struct DATA* UnZipStrToChain( char* p);
void PrintChain(struct DATA* p);
struct DATA
{
char str[MAXS];
struct DATA* next;
};
void PrintChain(struct DATA* p)
{
while(p!=NULL)
{
printf("%s\n",p->str);
p=p->next;
}
}
int main()
{
char Str[100];
struct DATA* head;
scanf("%s",Str);
head=UnZipStrToChain(Str);
PrintChain(head);
return 0;
}
/* 请在这里填写答案 */
### 输入样例:
in
1ab2cd1ab2ef
### 输出样例:
out
efef
cdcd
ab
ab
答案:若无答案欢迎评论