printf(%c,p->data[i]); }
p=p->next; } }
说明:
a、定义文本行数变量j,每行字符数i:int i,j; b、定义指针变量:LinkList *p;
c、将指针p指向链表表头:p=head->next; d、利用循环输出链表中信息: for(j=0;j<=NUM&&p!=NULL;j++)
{=for(i=0;(i<80)&&(p->data[i])!='#';i++) {=printf(%c,p->data[i]);} p=p->next; }
文本显示部分到此结束。
(3)CountWord() 文章内容统计函数 void CountWord() {
LinkList *temp; char ch; int i,j,t;
int WORD=0,word=0,space=0,num=0,sum=0; temp=head->next; for(j=0;j<=NUM;j++) {
for(i=0;(i<80)&&(temp->data[i])!='#';i++) {
ch=temp->data[i];
if((ch>='A')&&(ch<='Z')) WORD++;
else if((ch>='a')&&(ch<='z')) word++;
else if((ch>='0')&&(ch<='9')) num++;
else if(ch==' ') space++; }
sum=WORD+word+num; }
while(1) {
printf(\\ );
printf(\\ );
printf(\\ );
printf(\\ \\t****************************************************\\n); printf(\\ \\t**** 文章内容统计子菜单 ****\\n); printf(\\ \\t****************************************************\\n); printf(\\ \\t**** 文章中 字母 的个数: %d \\n,WORD+word); printf(\\ \\t**** 文章中 数字 的个数: %d \\n,num); printf(\\ \\t**** 文章中 空格 的个数: %d \\n,space);
printf(\\ \\t**** 文章中 所有字 的个数 : %d \\n,sum);
printf(\\ \\t**** 1 、退出返回主菜单 ****\\n);
printf(\\ \\t**** 2 、直接退出本系统 ****\\n); printf(\\ \\t****************************************************\\n); printf(\\ \\t请选择: ); scanf(%d,&t);
if(t==1){system(cls); break;}
else if(t==2)exit(0);
else {
printf(\\ \\t 对不起,无此功能 !请回车重新选择 !...\\n); printf(\\ \\t); fflush(stdin); getchar(); } } }
说明:
a、定义指针变量temp:LinkList *temp; b、定义记录文本行数变量j,每行字符数i;
c、定义记录文本大写字母数、小写字母数、空格数、数字数和总字数的变量: int WORD=0,word=0,space=0,num=0,sum=0;
d、将指针temp指向链表表头:temp=head->next;
利用循环对链表中信息进行匹配判断,将大写字母数、小写字母数、空格数、数字数和总字数统计出来:for(j=0;j<=NUM;j++) {
for(i=0;(i<80)&&(temp->data[i])!='#';i++) {
ch=temp->data[i];
if((ch>='A')&&(ch<='Z')) WORD++;
else if((ch>='a')&&(ch<='z')) word++;
else if((ch>='0')&&(ch<='9')) num++;
else if(ch==' ') space++; }
sum=WORD+word+num; }
e、本程序对统计项目设计了菜单。菜单的编写使用 while语句进行循环操作。 文本内容统计部分到此结束。
(4)SearchWord() 文章内容查找函数
void SearchWord(char *str1,LinkList* temp) {
char Data[20] ; int i,j,k=0,sum=0; int l=1;
temp=head->next; strcpy(Data,str1); for(i=0;i<=NUM;i++) {
for(j=0;j<80;j++) {
if((temp->data[j])==Data[k]) k++;
else if(Data[k]!='\\0') {
j=j-k; k=0; }
if(Data[k]=='\\0') {
sum++; j=j-k+1;
printf(\\ \\t\\t第%d次出现在第%d行第%d列\\n,l,i+1,j); l++; k=0;
continue;} }
temp=temp->next; }
printf(\\
\\t\\t\\t字符串总共出现次数为:%d\\n\\n,sum); C=sum; N=i*80+j; }
说明:
a、定义一个数组,用来记录需要查找的字符内容:char Data[20];
b、定义定义文本行数变量j,每行字符数i,记录字符出现的次数变量: int i,j,m=0.,sum=0;
c、对形参中定义的指针变量进行操作,使其指向链表表头:temp=head->next; d、使用拷贝函数,将形参中str1的值赋给Data:strcpy(Data,str1); e、利用循环进行查找操作:
for(i=0;i<=NUM;i++) /*利用循环进行查找操作*/ {
for(j=0;j<80;j++) {
if((temp->data[j])==Data[k]) k++;/*将输入的查找字符与链表中信息比较,
找到第一个相同的字符*/ else if(Data[k]!='\\0') {
j=j-k;/*从主串第j-k个位置重新查找*/ k=0; }
if(Data[k]=='\\0')
{
sum++;/* 此字符出现的次数加1*/
j=j-k+1;/*j记录下该字符串出现的位置*/
printf(\\ \\t\\t 第 %d 次出现在第%d行第%d 列\\n,l,i+1,j); l++; k=0;
continue; }
}
temp=temp->next;/*指向下一行*/ }
文本内容查找部分到此结束。
(5)DeleteWord() 文章内容删除函数 void DeleteWord(char *str2) {
char Data[20];
LinkList *temp,*term; int i,j,a,k,m,y,num; strcpy(Data,str2); for(y=0;y for(i=0;i<=NUM;i++) { term=temp; temp=temp->next; for(j=0;j<80;j++) { if((temp->data[j])==Data[k]) k++; else if(Data[k]!='\\0') {j=j-k;k=0;} if(Data[k]=='\\0') { num=j; break; } } if(num<80) break; }
数据结构课设文章编辑



