logo资料库

文章编辑系统(数据结构).doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
功能:输入一页文字,程序可以统计出文字、数字、空格的个数. 静态储存一页文章,每行最多不超过 80 个字符,共 N 行;要求(1)分别统计出其中英文 字母和空格数以及整篇文章总字数;(2)统计某一字符串在文章中出现次数,并输出该次 数;(3)删除某一子串,并将后面的字符前移. 存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号. 输出形式:(1)分行输出用户输入的各行字符;(2)分 4 行输出”全部字母数”、”数字个 数”、”空格个数”、”文章总字数”;(3)输出删除某一字符串后的文章. #include #include #include struct ca { char c; ca *next; }; void InitList(ca *L) { cout<<"输入一页文字(以#结束): "<c = getchar()) != '#') { L->next = new ca; L = L->next; L->next = NULL; } } void StrNo(ca *L) { int n = 0; char s[80], *q; ca *p; cout<<"输入一字符串: "; cin>>s; while(L->next) { for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++) if (p->c != *q) break; if (*q == '\0') n++; L = L->next; } cout<<"字符串 "<
ca *DelStr(ca *L) { ca *H = L; char s[80], *q; ca *p; cout<<"输入该子串: "; cin>>s; if (H->c == *s) { for (p = H->next, q = s+1; *q != '\0' && p->next; p = p->next, q++) if (p->c != *q) break; if (*q == '\0') H = p; } while(L->next) { for (p = L->next, q = s; *q != '\0' && p->next; p = p->next, q++) if (p->c != *q) break; if (*q == '\0') L->next = p; else L = L->next; } return H; } void print1(ca *L) { while(L->next) { cout<c; L = L->next; } cout<next; L = L->next, n++) if(isalpha(L->c)) p1++; else if(isdigit(L->c)) p2++; else if(L->c == ' ') p3++; else if(L->c == '\n') n--; cout<<"\n 全部字母数: "<
void main() { ca *L = new ca; int p1, p2, p3, n, c; InitList(L); do {cout<<"\n0:退出\n" "1:统计中英文字母和空格数以及整篇文章总字数\n" "2:统计某一字符串在文章中出现次数\n" "3:删除某一子串\n" "4:分行输出用户输入的各行字符\n"; cin>>c; switch(c) { case 1:print2(L, p1, p2, p3, n);break; case 2:StrNo(L);break; case 3:DelStr(L); case 4:print1(L); } }while(c); }
分享到:
收藏