⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 我的数据结构的实验作业(一个简单的行编辑程序)_数据结构与算法_数据结构算法_c语言_c 语言之家.htm

📁 严蔚民版的数据结构的完整课件
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                borderColor=#e2ca9f vAlign=top width="69%">
                  <TABLE align=center border=0 cellPadding=0 cellSpacing=0 
                  width="100%">
                    <TBODY>
                    <TR>
                      <TD height=40 width="100%"></TD></TR>
                    <TR>
                      <TD>
                        <FORM action=Readnews.asp?newsid=3526&amp;id2=3526 
                        method=post name=form1>
                        <CENTER><!-- <input type=submit name=aa value="点击关闭浮动图标" width=20 title="点击广告支持本站">--></CENTER></FORM></TD></TR>
                    <TR>
                      <TD align=middle bgColor=#dddddd height=20 
                      style="FONT-SIZE: 18px" vAlign=bottom 
                        width="85%"><STRONG><FONT color=#003399 
                        size=4><B>我的数据结构的实验作业(一个简单的行编辑程序) 
                      </B></FONT></STRONG></TD><BR></TR>
                    <TR>
                      <TD align=middle width="100%"><BR></TD></TR>
                    <TR>
                      <TD align=middle style="FONT-SIZE: 9pt" 
                        width="100%">发表日期:2004年5月22日&nbsp;&nbsp;&nbsp;&nbsp;作者:blackcat&nbsp;&nbsp;已经有836位读者读过此文</TD></TR>
                    <TR>
                      <TD align=middle width="100%"><!--下面的这一句是设置阅读文本区的宽度-->
                        <TABLE align=center border=0 cellPadding=0 cellSpacing=0 
                        style="TABLE-LAYOUT: fixed" width="90%">
                          <TBODY>
                          <TR>
                            <TD align=middle width="100%"></TD></TR>
                          <TR>
                            <TD style="WORD-WRAP: break-word"><FONT 
                              class=news><BR>
                              <P>#include &lt;e:\study\c\head.h&gt;<BR>#include 
                              &lt;stdio.h&gt;<BR>#include 
                              &lt;stdlib.h&gt;<BR>#include 
                              &lt;string.h&gt;<BR>#include 
                              &lt;ctype.h&gt;<BR>#include 
                              &lt;conio.h&gt;<BR>#define LISTSIZE 80<BR>typedef 
                              struct text<BR>{<BR>&nbsp;char string[80];// 
                              存储每一行的元素<BR>&nbsp;struct text *next;// 
                              指向后一个节点的指针<BR>&nbsp;struct text *pre;// 
                              指向前一个节点的指针<BR>&nbsp;int num;// 
                              每一行元素的长度<BR>&nbsp;int flat;// 
                              确定此行是否被删除的标志<BR>}text;<BR>FILE *fp,*out;<BR>text 
                              *head;<BR>int n=0,sum,delnum,xiugai=0,page=0;</P>
                              <P>void 
                              byebye()<BR>{<BR>&nbsp;puts("\t\t\t********&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp; 
                              ********");<BR>&nbsp;puts("\t\t\t*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp; *&nbsp; 
                              ");<BR>&nbsp;puts("\t\t\t*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; 
                              ");<BR>&nbsp;puts("\t\t\t*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; 
                              ");<BR>&nbsp;puts("\t\t\t********&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              ********");<BR>&nbsp;puts("\t\t\t*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; 
                              ");<BR>&nbsp;puts("\t\t\t*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; 
                              ");<BR>&nbsp;puts("\t\t\t*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; 
                              ");<BR>&nbsp;puts("\t\t\t********&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              ********");</P>
                              <P>}</P>
                              <P><BR>void 
                              HELP()<BR>{<BR>&nbsp;printf("\n\t**********************************************************\n");<BR>&nbsp;printf("\t**&nbsp; 
                              打开文件:&nbsp; o&lt;行号&gt;&lt;文件名&gt;&lt;回车&gt;&nbsp; 
                              **\n");<BR>&nbsp;printf("\t**&nbsp; 行插入格式: 
                              i&lt;行号&gt;&lt;回车&gt;&lt;文本&gt;&lt;回车&gt; 
                              **\n");<BR>&nbsp;printf("\t**&nbsp; 行删除格式: 
                              d&lt;行号1&gt;[&lt;空格&gt;&lt;行号2&gt;]&lt;回车&gt; 
                              **\n");<BR>&nbsp;printf("\t**&nbsp; 活区切换格式: 
                              n&lt;回车&gt;&nbsp;&nbsp;&nbsp; 
                              **\n");<BR>&nbsp;printf("\t**&nbsp; 活区显示格式: 
                              p&lt;回车&gt;&nbsp;&nbsp;&nbsp; 
                              **\n");<BR>&nbsp;printf("\t**&nbsp; 
                              注意:在执行所有命令前必须先用o命令打开文件,并 
                              **\n");<BR>&nbsp;printf("\t**&nbsp; 
                              用p命令显示出来!!!&nbsp;&nbsp;&nbsp; 
                              **\n");<BR>&nbsp;printf("\t**********************************************************\n");<BR>&nbsp;system("pause");<BR>&nbsp;printf("\n\n\n");<BR>&nbsp;<BR>}</P>
                              <P>&nbsp;</P>
                              <P>void 
                              ABOUT()<BR>{<BR>&nbsp;printf("\n\t\t*****************************************\n");<BR>&nbsp;printf("\t\t** 
                              作者:BLACKCAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              **\n");<BR>&nbsp;printf("\t\t** 
                              单位:ZZU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              **\n");<BR>&nbsp;printf("\t\t** <A 
                              href="mailto:E-mail:blackcat242@etang.com">E-mail:blackcat242@etang.com</A>&nbsp;&nbsp; 
                              **\n");<BR>&nbsp;printf("\t\t*****************************************\n");<BR>&nbsp;system("pause");<BR>&nbsp;system("cls");<BR>&nbsp;printf("\n\n\n");<BR>}</P>
                              <P>void Createlist()<BR>{<BR>&nbsp;text 
                              *p1,*p2;<BR>&nbsp;p1=p2=(text 
                              *)malloc(sizeof(text));<BR>&nbsp;head=NULL;<BR>&nbsp;while(n&lt;10)<BR>&nbsp;{<BR>&nbsp; 
                              n=n+1;<BR>&nbsp; if(n==1) head=p1;<BR>&nbsp; else 
                              <BR>&nbsp; {<BR>&nbsp;&nbsp; 
                              p2-&gt;next=p1;<BR>&nbsp;&nbsp; 
                              p1-&gt;pre=p2;<BR>&nbsp;&nbsp; 
                              p1-&gt;flat=0;<BR>&nbsp; }<BR>&nbsp; 
                              p2=p1;<BR>&nbsp; p1=(text 
                              *)malloc(sizeof(text));<BR>&nbsp;}<BR>&nbsp;p2-&gt;next=NULL;<BR>}</P>
                              <P>void freemem()<BR>{<BR>&nbsp;text 
                              *p;<BR>&nbsp;for(p=head;head!=NULL;)<BR>&nbsp;{<BR>&nbsp; 
                              head=p-&gt;next;<BR>&nbsp; free(p);<BR>&nbsp; 
                              p=head;<BR>&nbsp;}<BR>}<BR>int 
                              EDIT()<BR>{<BR>&nbsp; <BR>&nbsp;char 
                              cmd;<BR>&nbsp;do<BR>&nbsp;{<BR>&nbsp; 
                              cmd=getchar();<BR>&nbsp; 
                              printf("\n请输入命令(按E键退出):");<BR>&nbsp; 
                              cmd=getchar();<BR>&nbsp; switch(cmd)<BR>&nbsp; 
                              {<BR>&nbsp;&nbsp; case 'e':<BR>&nbsp;&nbsp; case 
                              'E':<BR>&nbsp;&nbsp;&nbsp; 
                              if(xiugai==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              saveall();<BR>&nbsp;&nbsp;&nbsp; 
                              freemem();<BR>&nbsp;&nbsp;&nbsp; 
                              system("cls");<BR>&nbsp;&nbsp;&nbsp; return 
                              0;<BR>&nbsp;&nbsp; case 'o':<BR>&nbsp;&nbsp; case 
                              'O':<BR>&nbsp;&nbsp;&nbsp; 
                              Openfiles();<BR>&nbsp;&nbsp;&nbsp; 
                              break;<BR>&nbsp;&nbsp; case 'p':<BR>&nbsp;&nbsp; 
                              case 'P':<BR>&nbsp;&nbsp;&nbsp; 
                              Createlist();<BR>&nbsp;&nbsp;&nbsp; 
                              display();<BR>&nbsp;&nbsp;&nbsp; 
                              break;<BR>&nbsp;&nbsp; case 'n':<BR>&nbsp;&nbsp; 
                              case 'N':<BR>&nbsp;&nbsp;&nbsp; 
                              saveanddisplay(10);<BR>&nbsp;&nbsp;&nbsp; 
                              break;<BR>&nbsp;&nbsp; case 'd':<BR>&nbsp;&nbsp; 
                              case 'D':<BR>&nbsp;&nbsp;&nbsp; 
                              del();<BR>&nbsp;&nbsp;&nbsp; 
                              break;<BR>&nbsp;&nbsp; case 'i':<BR>&nbsp;&nbsp; 
                              case 'I':<BR>&nbsp;&nbsp;&nbsp; 
                              insert();<BR>&nbsp;&nbsp;&nbsp; 
                              break;<BR>&nbsp;&nbsp; 
                              default:printf("\n\n\n!!!输入错误!!!");<BR>&nbsp; 
                              }<BR>&nbsp;}while(cmd!='e'&amp;&amp;cmd!='E');<BR>&nbsp;return 
                              0;<BR>}</P>
                              <P>int Openfiles()<BR>{<BR>&nbsp;char 
                              name[30],outname[30];<BR>&nbsp;puts("请输入要打开的文件名:");<BR>&nbsp;scanf("%s",name);<BR>&nbsp;if((fp=fopen(name,"r+"))==NULL)<BR>&nbsp;{<BR>&nbsp; 
                              printf("打不开原文件! \n");<BR>&nbsp; 
                              exit(0);<BR>&nbsp;}<BR>&nbsp;puts("请输入要写入的文件名:");<BR>&nbsp;scanf("%s",outname);<BR>&nbsp;if((out=fopen(outname,"w+"))==NULL)<BR>&nbsp;{<BR>&nbsp; 
                              printf("打不开目标文件!\n");<BR>&nbsp; 
                              exit(0);<BR>&nbsp;}<BR>&nbsp;return 0;<BR>}</P>
                              <P><BR>int display()<BR>{<BR>&nbsp;int 
                              i;<BR>&nbsp;char conti='y';<BR>&nbsp;text 
                              *p;<BR>&nbsp;while((!feof(fp))&amp;&amp;(conti=='y'||conti=='Y'))<BR>&nbsp;{<BR>&nbsp; 
                              <BR>&nbsp; page++;<BR>&nbsp; 
                              printf("\t\t第%d页\n",page);<BR>&nbsp; 
                              for(i=0,p=head,sum=0;(i&lt;10)&amp;&amp;(!feof(fp));i++,p=p-&gt;next)<BR>&nbsp; 
                              { <BR>&nbsp;&nbsp; 
                              fgets(p-&gt;string,sizeof(p-&gt;string),fp);<BR>&nbsp;&nbsp; 
                              puts(p-&gt;string);<BR>&nbsp;&nbsp; 
                              p-&gt;flat=1;<BR>&nbsp;&nbsp; 
                              p-&gt;num=strlen(p-&gt;string);<BR>&nbsp;&nbsp; 
                              sum=sum+p-&gt;num;<BR>&nbsp; }<BR>&nbsp; 
                              puts("Continue?(Y/N):");<BR>&nbsp; 
                              conti=getche();<BR>&nbsp; if(feof(fp))<BR>&nbsp; 
                              {<BR>&nbsp;&nbsp; 
                              puts("\n文件已经结束!");<BR>&nbsp;&nbsp; return 
                              0;<BR>&nbsp; }<BR>&nbsp;}<BR>&nbsp;return 
                              0;<BR>}<BR>int saveanddisplay(int hang)// 
                              命令n执行的函数<BR>{<BR>&nbsp;int 
                              i,endflat=0;<BR>&nbsp;char 
                              conti='y';<BR>&nbsp;text 
                              *p=NULL;<BR>&nbsp;page++;<BR>&nbsp;for(i=0,p=head;i&lt;hang;i++,p=p-&gt;next) 
                              file:// 将活区写入文件<BR>&nbsp; 
                              if(p-&gt;flat==1)<BR>&nbsp; {<BR>&nbsp;&nbsp; 
                              fputs(p-&gt;string,out);<BR>&nbsp;&nbsp; 
                              p-&gt;flat=0;<BR>&nbsp; 
                              }<BR>&nbsp;if(!feof(fp))<BR>&nbsp; 
                              printf("\t\t第%d页\n",page); 
                              <BR>&nbsp;for(i=0,p=head,sum=0;(i&lt;10)&amp;&amp;(!feof(fp));i++,p=p-&gt;next)// 
                              从文件读入活区<BR>&nbsp; 
                              if(fgets(p-&gt;string,sizeof(p-&gt;string),fp))<BR>&nbsp; 
                              {<BR>&nbsp;&nbsp; puts(p-&gt;string); 
                              <BR>&nbsp;&nbsp; p-&gt;flat=1;<BR>&nbsp;&nbsp; 
                              p-&gt;num=strlen(p-&gt;string);<BR>&nbsp;&nbsp; 
                              sum=sum+p-&gt;num;<BR>&nbsp; 
                              }<BR>&nbsp;if(feof(fp))<BR>&nbsp; 
                              printf("文件已经结束!");<BR>&nbsp;return 0;<BR>}</P>
                              <P>int saveall()// 
                              退出编辑函数后执行的函数,将所有的内容存盘<BR>{<BR>&nbsp;int 
                              i,endflat=0;<BR>&nbsp;char 
                              conti='y';<BR>&nbsp;text 
                              *p;<BR>&nbsp;for(i=0,p=head;i&lt;10;i++,p=p-&gt;next) 
                              file:// 将活区写入文件<BR>&nbsp; 
                              if(p-&gt;flat==1)<BR>&nbsp; {<BR>&nbsp;&nbsp; 
                              fputs(p-&gt;string,out);<BR>&nbsp;&nbsp; 
                              p-&gt;flat=0;<BR>&nbsp; 
                              }<BR>&nbsp;while(!feof(fp))// 将其余的内容写入文件<BR>&nbsp; 
                              fputc(fgetc(fp),out);<BR>&nbsp;return 0;<BR>}</P>
                              <P>int del()// 删除d命令对应的函数<BR>{<BR>&nbsp;text 
                              *p1,*p2,*p3;<BR>&nbsp;int 
                              min,max,i;<BR>&nbsp;xiugai=1;<BR>&nbsp;scanf("%d 
                              %d",&amp;min,&amp;max);<BR>&nbsp;if(head==NULL)<BR>&nbsp;{<BR>&nbsp; 
                              printf("\nlist null!\n");<BR>&nbsp; return 
                              0;<BR>&nbsp;}<BR>&nbsp;p1=p2=head;<BR>&nbsp;for(i=0;i&lt;min-1;i++)/*找到要删除的第一行*/<BR>&nbsp; 
                              p1=p1-&gt;next;<BR>&nbsp;for(i=0;i&lt;max;i++)/*找到要删除的最后一行*/<BR>&nbsp; 
                              p2=p2-&gt;next;<BR>&nbsp;for(delnum=0;p1!=p2;p1=p1-&gt;next)/*删除中间的节点,将flat赋值0*/<BR>&nbsp;{<BR>&nbsp; 
                              p1-&gt;flat=0;<BR>&nbsp; 
                              delnum=delnum+p1-&gt;num;<BR>&nbsp;}<BR>&nbsp;for(i=0,p3=head;i&lt;10;i++,p3=p3-&gt;next)// 
                              显示删除后的结果<BR>&nbsp; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -