当前位置:文档之家› 串基本操作的演示(附带源代码)

串基本操作的演示(附带源代码)

串基本操作的演示(附带源代码)
串基本操作的演示(附带源代码)

信息科学与技术学院《数据结构》课程设计报告

完成日期:

目录

一、需求分析 (1)

二、概要设计 (2)

三、详细设计 (2)

1、自定义数据类型 (2)

2、基本操作函数 (3)

3、主函数 (8)

四、调试分析 (9)

五、用户手册 (10)

六、测试结果 (11)

七、实验中出现的问题、解决方法和心得体会 (11)

八、附录 (11)

一、需求分析

【问题描述】

如果语言没有把串作为一个预先定义好的基本类型对待,又需要用该语言写一个涉及串操作的软件系统时,用户必须自己实现串类型。试实现串类型,并写一个串的基本操作的演示系统。

【基本要求】

在教科书4.2.2节用堆分配存储表示实现HString串类型的最小操作子集的基础上,实现串抽象数据类型的其余基本操作(不使用C语言本身提供的串函数)。参数合法性检查必须严格。

利用基本操作函数构造以下系统:它是一个命令解释程序,循环往复地处理用户键入的每一条命令,直至终止程序的命令为止。命令定义如下:

(1)赋值。格式: A <串标识> <回车>

用<串标识>所表示的串的值建立新串,并显示新串的内部名和串值。例:A ‘Hi!’

(2)判相等。格式: E <串标识1> <串标识2> <回车> 若两串相等,则显示"EQUAL",否则显示"UNEQUAL"。 (3)联接。格式:C <串标识1> <串标识2> <回车>

将两串拼接产生结果串,它的内部名和串值都显示出来。

(4)求长度。格式:L〈串标识> <回车>

显示串的长度。

(5)求子串。格式:S <串标识> +<数1>+<数2><回车>

如果参数合法,则显示子串的内部名和串值。<数>不带正负号。

(6)子串定位。格式:I <串标识1> <串标识2> <回车>

显示第二个串在第一个串中首次出现时的起始位置。

(7)串替换。格式: R <串标识1> <串标识2> <串标识3> <回车>

将第一个串中所有出现的第二个串用第三个串替换,显示结果串的内部名和串值,原串不变。(8)显示。格式:P <回车>

显示所有在系统中被保持的串的内部名和串值的对照表。

(9)删除。格式:D <内部名> <回车>

删除该内部名对应的串,即赋值的逆操作。

(10)退出。格式:Q <回车>

结束程序的运行。

在上述命令中,如果一个自变量是串,则应首先建立它。基本操作函数的结果(即函数值)如果是一个串,则应在尚未分配的区域内新辟空间存放。

【测试数据】

自定。但要包括以下几组:

(1)E ‘’‘’<回车>,应显示"EQUAL"。

(2)E ‘abc’‘abcd’<回车>,应显示"UNEQUAL"。 (3)C ‘‘‘‘ <回车>,应显示"。

(4)I ‘a’‘’ <回车>,应报告:参数非法。 (5)R ‘aaa’‘aa’‘b’<回车>,应显示'ba’

回车>,应显示’Fabab’。

二、概要设计

实现串的抽象数据类型和实现其基本操作,程序中将涉及下列抽象数据类型:

1.定义串的基本主结构

ADT String{

数据对象:D={ai| ai∈charcaterset,i=1,2,…,n,n>=0}

数据关系:R1={|ai-1,ai∈D, i=1,2,…,n}

基本操作:

compare(hstring s,hstring t)

初始条件:S和T是已存在的Hstring类型。

操作结果:比较其值,显示结果“UNEQUAL”或“EQUAL”。

length(hstring s)

初始条件:S是已存在的Hstring类型。

操作结果:返回该串的长度。

concat(hstring &t,hstring s1,hstring s2)

初始条件:S1和S2是已存在的Hstring类型。

操作结果:由S1和S2联接成新串。

index(hstring s,hstring t,int pos)

初始条件:S和T是已存在的Hstring类型。

操作结果:显示第二个串在第一个串中首次出现的起始位置。

replace(hstring &s,hstring t,hstring v)

初始条件:M、t和v是已存在的Hstring类型。

操作结果:将第一个串中所有出现的第二个串用第三个串替换,显示结果串的内部名和

串值,原串不变。

sub (hstring &sub,hstring s,int pos,int len)

初始条件:S是已存在的Hstring类型。

操作结果:如果参数合法,则显示子串的内部名和串值。

display(HString S)

初始条件:S是已存在的Hstring类型。

操作结果:显示串S的内部名和串值。

copy(hstring &t,hstring s)

初始条件:S是已存在的Hstring类型。

操作结果:由串s复制得串t

getin(int n)

初始条件:处理命令串S1,

操作结果:把串值存入串头表中

}ADT String

三、详细设计

1、自定义数据类型

typedef struct hstring{

char *ch;

int length;

}hstring;

hstring headlist[100]; //串头数组

2、基本操作函数

1、赋值

void strassign(){

char c;

int i;

char a[20];

while((c=getchar())!='\n'){

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

headlist[curnum].ch[i]=a[i];

curnum++;

}

}

printf("内部名:%d 串值:",curnum-1);

for(i=0;i<=headlist[curnum-1].length-1;i++)

printf("%c",headlist[curnum-1].ch[i]);

printf("\n");

}

2比较

void compare(){

char c;

int i,m,n,j=0;

while((c=getchar())!='\n'){

if(c>=48&&c<=57) {

i=0;

b[i++]=c;

while((c=getchar())>=48&&c<=57)//还是数字

b[i++]=c;

b[i]='\0';

s[j]=atoi(b);

j++;

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

headlist[curnum].ch[i]=a[i];

s[j++]=curnum++;

}

}

if(s[0]>=curnum||s[1]>=curnum)

printf("参数不合法\n");

else{

j=strcompare(headlist[s[0]],headlist[s[1]]);

if(j==0) printf("EQUAL\n");

else printf("UNEQUAL\n");

}

}

3、求长

void length(){

char c;

int i,m,n,j=0;

while((c=getchar())!='\n'){

if(c>=48&&c<=57) {

i=0;

b[i++]=c;

while((c=getchar())>=48&&c<=57)//还是数字

b[i++]=c;

b[i]='\0';

s[j]=atoi(b);

j++;

}

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

headlist[curnum].ch[i]=a[i];

s[j]=curnum++;

}

if(s[0]>=curnum) {printf("参数不合法\n"); return;}

printf("%d\n",headlist[s[0]].length);

}

4、连接

void concat(){

char c;

int i,m,n,j=0;

while((c=getchar())!='\n'){

if(c>=48&&c<=57) {

i=0;

b[i++]=c;

while((c=getchar())>=48&&c<=57)//还是数字

b[i++]=c;

b[i]='\0';

s[j]=atoi(b);

j++;

}

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

headlist[curnum].ch[i]=a[i];

s[j++]=curnum++;

}

}

if(s[0]>=curnum||s[1]>=curnum)

printf("参数不合法\n");

else{

printf("连接后串内部名:%d 串值:",curnum);

strconcat(headlist[curnum++],headlist[s[0]],headlist[s[1]]);

}

}

5、子串定位

void index(){

char c;

int i,m,n,j=0;

while((c=getchar())!='\n'){

if(c>=48&&c<=57) {

i=0;

b[i++]=c;

b[i++]=c;

b[i]='\0';

s[j]=atoi(b);

j++;

}

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

headlist[curnum].ch[i]=a[i];

s[j++]=curnum++;

}

}

if(s[0]>=curnum||s[1]>=curnum)

printf("参数不合法\n");

else{

printf("%d\n",strindex(headlist[s[0]],headlist[s[1]],1));

}

}

6、显示

void display(){

int i,j;

char c;

while((c=getchar())!='\n'){;}

for(i=0;i

printf("\n内部名%d ",i);

for(j=0;j

printf("%c",headlist[i].ch[j]);

}

}

7、删除

void Delete(){

char c;

int i,m,n,j=0;

while((c=getchar())!='\n'){

if(c>=48&&c<=57) {

i=0;

b[i++]=c;

while((c=getchar())>=48&&c<=57)//还是数字

b[i]='\0';

s[j]=atoi(b);

j++;

}

}

if(s[0]>=curnum) printf("参数不合法\n");

else clearstring(headlist[s[0]]);

}

8 求子串

void sub(){

char c;

int i,m,n,j=0;

while((c=getchar())!='\n'){

if(c>=48&&c<=57) {

i=0;

b[i++]=c;

while((c=getchar())>=48&&c<=57)//还是数字

b[i++]=c;

b[i]='\0';

s[j]=atoi(b);

j++;

}

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

headlist[curnum].ch[i]=a[i];

s[j++]=curnum++;

}

}

if(s[0]>=curnum) {printf("参数不合法\n"); return;}

j=substring(headlist[curnum],headlist[s[0]],s[1],s[2]);

if(j==1){

printf("子串内部名:%d ",curnum);

for(i=0;i

printf("%c",headlist[curnum].ch[i]);

curnum++;

}

}

9、替换

char c;

int i;

char a[20];

while((c=getchar())!='\n'){

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

headlist[curnum].ch[i]=a[i];

curnum++;

}

}

strcopy(headlist[curnum],headlist[curnum-3]);

strreplace(headlist[curnum-1],headlist[curnum-3],headlist[curnum-2]);

for(i=0;i

printf("%C",headlist[curnum-1].ch[i]);

printf("\n");

}

3、主函数

void main(){

char c;

printf("**************************************************************\n");

printf(" A:赋值E:判相等C:联接L:求长度\n S:求子串I:子串定位R:串替换P:显示\n D:删除Q:退出\n");

printf("**************************************************************\n");

printf("请输入命令:\n");

while((c=getchar())!='Q'){

switch(c){

case 'E':

compare();printf("串数:%d\n",curnum);

break;

case 'A':

strassign();

printf("串数:%d\n",curnum);break;

case 'L':

length();

printf("串数:%d\n",curnum);break;

concat();

printf("\n串数:%d\n",curnum);break;

case 'I':

index();

printf("\n串数:%d\n",curnum);break;

case 'P':

display();printf("\n");

break;

case 'D':

Delete();

break;

case 'S':

sub();

break;

case 'R':

replace();

break;

}

}

}

四、调试分析

五、用户手册

1.本程序的运行环境为DOS操作系统,执行文件为:数据结构课程设计.exe.

2.进入程序后即会显示可以使用的命令和命令用途和对应命令的语法格式的列表,用户可

以根据命令列表输入正确的命令。如果输入正确就会显示相应的结果,接着可以输入下

一条命令。如果输入错误,会显示相应的错误的原因并提示重新输入命令。

3.命令是以回车为结束的标志。

4.本程序只能输入字符串,且字符串支持空格符,不过字符串必须用双单引号括住。所以

Delete命令需要输入的数字也必须用双单引号括住。但命令Substring并不需要如此,

在提示“请输入子串的开始位置:”和“请输入子串的结束中位置:”直接输入数字即可。

5.命令Subsring在输出正确结果后会接着输出“此命令不存在!请重新输入!”此提示,

此问题一直都没有解决,也是该程序的缺陷,但是结果是正确的。

6.若要退出程序,请键入命令:Q。

六、测试结果

(1)E ‘’‘’

命令输出的结果为:EQUAL

(2)E ‘abc’‘abcd’

命令输出的结果为:UNEQUAL

(3) I ‘a’‘’

语法格式错误!请重新输入!

(4)R ‘aaa’‘aa’’b’

命令输出的结果为:ba

(5)R ‘aaabc’’a’’aab’

命令输出的结果为:aabaabaabbc

(6)R ‘aaaaaaaa’‘aaaa’‘ab’

命令输出的结果为:abab

(7)A ‘string’

命令输出的结果为:

新赋值的字符串的内部名为:4,串值为:string

七、实验中出现的问题、解决方法和心得体会

这个实验是对串的操作的时间,实现串操作的基本函数,在接受命令的输入格式方面,试了很多种方法。开始时尝试过用getchar()函数来接收命令,并根据接受到的指令进行操作。在调试程序的过程中,遇到一些结果不正确或超出范围的情况,又要重新返回相应的函数进行检查和修改补充,才能使程序更加健壮和完整,才能做出一个更加实用的软件

八、附录

源程序

#include

#include

#include

#include

typedef struct hstring{

char *ch;

int length;

}hstring;

hstring headlist[100];

int curnum=0; //系统中现有的串的数目

int s[3]; //命令的串参数的内部名(最多3)char a[20];

char b[5];

int strcompare(hstring s,hstring t){

//若s>t,则返回值>0;若s=t,则返回值=0;若s

for(i=0;i

if(s.ch[i]!=t.ch[i]) return s.ch[i]-t.ch[i];

return s.length-t.length;

}

void clearstring(hstring &s){

//将s清为空串

if(s.ch){

free(s.ch);

s.ch=0;

}

s.length=0;

}

void strconcat(hstring &t,hstring s1,hstring s2){

//用t返回由s1和s2联接而成的新串

int i,j;

if(t.ch) free(t.ch);

if(!(t.ch=(char*)malloc((s1.length+s2.length+1)*sizeof(char)))){ printf("overflow\n");return;}

for(i=0;i<=s1.length-1;i++)

t.ch[i]=s1.ch[i];

t.length=s1.length+s2.length;

for(i=s1.length,j=0;i<=t.length-1;i++,j++)

t.ch[i]=s2.ch[j];

for(i=0;i

printf("%c",t.ch[i]);

}

int substring(hstring &sub,hstring s,int pos,int len){

//用sub返回串s的第pos个字符起长度为len的子串

//其中,1<=pos<=strlength(s)且0<=len<=strlength(s)-pos+1 int i,j;

if(pos<1 || pos>s.length || len<0 || len>s.length-pos+1){

printf("参数不合法\n");

return 0;

}

if(!len){sub.ch=0; sub.length=0;}

else{

for(i=0,j=pos-1;i<=len-1;i++,j++)

sub.ch[i]=s.ch[j];

sub.length=len;

return 1;

}//else

}

int strindex(hstring s,hstring t,int pos){//子串定位int m,n,i;

hstring sub;

n=s.length;

m=t.length;

i=pos;

if(m==0) return 0;

while(i<=n-m+1){

substring(sub,s,i,m);

if(strcompare(sub,t)!=0) ++i;

else

return i;

}//while

return 0;

}

void strcopy(hstring &t,hstring s){

//复制;由串s复制得串t

int i;

if(!s.length){

t.length=0;

}

else{

t.ch=(char*)malloc((s.length+1)*sizeof(char));

for(i=0;i<=s.length-1;i++){

t.ch[i]=s.ch[i];

}//for

t.length=s.length;

curnum++;

}//else

}

int strempty(hstring s){

if(s.length==0)

return 1;

else return 0;

}

void strreplace(hstring &s,hstring t,hstring v){

//将串s中所有子串t替换为v

int i,j,k,l;

for(i=0;i<=s.length-t.length;i++){

for(j=i,k=0;t.ch[k] && k

if(k==t.length){//找到了与t匹配的子串:分三种情况处理

if(t.length==v.length){

for(l=1;l<=t.length;l++)//新子串长度与原子串相同时:直接替换

s.ch[i+l-1]=v.ch[l-1];

}

for(l=s.length-1;l>=i+t.length;l--)

s.ch[l+v.length-t.length]=s.ch[l];

for(l=1;l<=v.length;l++)

s.ch[i+l-1]=v.ch[l-1];

}

else{//新子串长度小于原子串时:先将后部左移

for(l=i+v.length;l<=s.length+v.length-t.length-1;l++)

s.ch[l]=s.ch[l-v.length+t.length];

for(l=1;l<=v.length;l++)

s.ch[i+l-1]=v.ch[l-1];

}

s.length=s.length-t.length+v.length;

i+=v.length-1;

}//if

}//for

}

void strassign(){

char c;

int i;

char a[20];

while((c=getchar())!='\n'){

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

curnum++;

}

}

printf("内部名:%d 串值:",curnum-1);

for(i=0;i<=headlist[curnum-1].length-1;i++)

printf("%c",headlist[curnum-1].ch[i]);

printf("\n");

}

void getin(){

char c;

int i,j=0;

while((c=getchar())!='\n'){

if(c>=48&&c<=57) {

i=0;

b[i++]=c;

while((c=getchar())>=48&&c<=57)//还是数字

b[i++]=c;

b[i]='\0';

s[j]=atoi(b);

j++;

}

if(c=='\''){

i=0;

while((c=getchar())!='\'')

a[i++]=c;

headlist[curnum].ch=(char*)malloc((i+1)*sizeof(char));

headlist[curnum].length=i;

for(i=0;i

s[j++]=curnum++;

}

}

}

void compare(){

getin();

int j=0;

if(s[0]>=curnum||s[1]>=curnum)

printf("参数不合法\n");

else{

j=strcompare(headlist[s[0]],headlist[s[1]]);

if(j==0) printf("EQUAL\n");

else printf("UNEQUAL\n");

}

}

void length(){

getin();

int j=0;

if(s[0]>=curnum) {printf("参数不合法\n"); return;}

printf("%d\n",headlist[s[0]].length);

}

void concat(){

getin();

int j=0;

if(s[0]>=curnum||s[1]>=curnum)

printf("参数不合法\n");

else{

printf("连接后串内部名:%d 串值:",curnum);

C语言数据结构串的基本操作

实验九串的基本操作 #include #include #include typedef char Status; int strlen(char *p) { int i=0; while(*p++)i++; return i; } typedef struct { char *ch; // 若是非空串,则按串长分配存储区,否则ch为NULL int length; // 串长度 }HString; // 初始化(产生空串)字符串T void InitString(HString *T) { (*T).length=0; (*T).ch=NULL; } // 生成一个其值等于串常量chars的串T Status StrAssign(HString *T, char *chars) { int i,j; if((*T).ch) free((*T).ch); // 释放T原有空间 i = strlen(chars); // 求chars 的长度i if(!i) { // chars的长度为0 (*T).ch = NULL; (*T).length = 0; } else { // chars的长度不为0 (*T).ch = (char*)malloc(i*sizeof(char)); // 分配串空间 if(!(*T).ch) // 分配串空间失败 exit(0); for(j = 0; j < i; j++) // 拷贝串 (*T).ch[j] = chars[j]; (*T).length = i; } return 1; } // 由串S复制得串T int StrCopy(HString *T,HString S) { int i; if((*T).ch) free((*T).ch); // 释放T原有空间 (*T).ch=(char*)malloc(S.lengt h*sizeof(char)); // 分配串空间if(!(*T).ch) // 分配串空间失 败 exit(0); for(i=0;i

计算机应用基础——习题评讲:PPT演示文稿制作基本操作部分

计算机应用基础——习题评讲:PPT演示文稿制作基本操 作部分 1、PowerPoint 是什么软件? PowerPoint 是美国微软公司推出的办公自动化系列软件 Office 中用于演示文稿编辑制作的应用软件。用PowerPoint 可以轻松地将文字、图形、图像、图表、声音等多种媒体信息集成在一起,制作出能够充分突出主题且表现形式灵活的幻灯片系列,因此被广泛应用于多媒体教学和各种设计方案、毕业设计和答辨、学习总结和工作报告等信息的展示,成为现代办公必备的工具软件之一。 通过PowerPoint的“内容提示向导”或“设计模板”,可以轻松地编辑制作出电子演示文稿、投影幻灯片、演讲者备注、观众讲义和文件大纲,以及 Web 演示文稿,使用者也可以根据需要创建具有独立风格的设计模板,并将其应用于演示文稿中。 使用 PowerPoint 创建的文档,保存时默认的文件扩展名为 .ppt,被称为 PPT 文档。 也可以将演示文稿保存为放映格式(文件扩展名为 .pps)、网页格式(文件扩展名为 .htm)等其他格式,还可以通过打包工具,将制作的幻灯片和播放器集成为一个程序文件,以便于在没有安装 PowerPoint 的计算机上播放。 2、如何启动 PowerPoint 创建演示文稿? 在安装了Office 2003 的系统中,打开“开始”菜单,依次选择“程序”、“Microsoft Office”、“Microsoft Office PowerPoint 2003”项,即可启动PowerPoint 并打开一个名为“演示文稿 1”的空演示文稿文档。 如果桌面上创建有 PowerPoint 的快捷方式,双击该快捷方式,可启动 PowerPoint 并打开一个名为“演示文稿1”的空演示文稿文档。 3、PowerPoint 窗口有什么特点? PowerPoint 窗口由PowerPoint程序窗口和演示文稿文档窗口套叠而成,从上到下依次是:标题栏、菜单栏、常用工具栏、格式工具栏、文档编辑窗口、绘图工具栏、状态栏等。 (1)标题栏位于窗口的最上方,它的左端显示应用程序名称Mivrosoft PowerPoint和演示文稿文档的名称,它的右端是三个窗口控制按钮,即最小化按钮 _ 、最大化□或还原按钮、关闭按钮×。 (2)菜单栏位于标题栏的下方,有文件、编辑、视图、插入、格式、工具、幻灯片放映、窗口、帮助九个菜单项,单击菜单项名,可打开下拉菜单,选择执行菜单中的相应命令;双击菜单项名,可展示完整的菜单列表。菜单栏的右端是文档窗口的关闭按钮,单击可关闭当前正在编辑制作的演示文稿,但并不退出 PowerPoint。 (3)默认情况下,启动PowerPoint将打开“常用”工具栏和“格式”工具栏,并且两个工具栏默认为并排显示(显示在同一行中),将两个工具栏分两行排列的方法为:执行“工具”菜单的“自定义”命令,在弹出的对话框中选中“分两排显示‘常用’工具栏和‘格式’工具栏”选项,或者拖动工具栏左端的移动柄到需要的位置。

数据结构《第4章 串存储与基本操作的实现》

第四章串存储与基本操作的实现 本章学习要点 ◆熟悉串的相关概念以及串与线性表的关系 ◆重点掌握串的定长存储、堆分配存储的表示方法与基本操作的实现 ◆了解串的各种存储结构,能根据需要合理选用串的存储结构解决实际问题 “串”(string),是字符串的简称,它是一种特殊的线性表,其特殊性在于组成线性表的数据元素是单个字符。字符串在计算机处理实际问题中使用非常广泛,比如人名、地名、商品名、设备名等均为字符串。同样在文字编辑、自然语言理解和翻译、源程序的编辑和修改等方面,都离不开对字符串的处理。 4.1串的基本概念 4.1.1串的概念 1.串的定义 串(string)是由n个字符组成的有限序列,记为:S=”a0a1a2…a n-1” (n≥0)。 其中,S是串的名字,字符序列a0a1a2…a n-1是串的值,a i(0≤i≤n-1)可以是字母、数字或其他字符元素;由于在C语言系统中数组元素的下标是从0开始的,所以串中所含元素的序号等于该元素的下标值加1;串中所含字符的个数n称为该串的长度,长度为0的字符串称为空串(null string)。 从串的定义可以看出,串实际上是数据元素为字符的特殊的线性表。 例如: (1)A=“X123” (长度为4的串) (2)B=“12345654321” (长度为11的串) (3)C=“Bei Jing” (长度为8的串) (4)D=“” (长度为0的空串) (5)E=“This is a string” (长度为16的串) (6)F=“ is a ” (长度为6的串) 2.子串、主串和位置 串中任意连续的字符组成的子序列称为该串的子串;相应地,包含子串的串称为主串。串中的字符在串序列中的序号称为该字符在该串中的位置;子串的第一个字符在主串中的位置称为子串在主串中的位置。显然,串为其自身的子串,并规定空串为任何串的子串。显然,在不考虑空子串的情况下,一个长度为n的字符串具有n(n+1)/2个子串。 例如: 在上例的(6)中串F就是(5)中串E的子串,且子串F在主串E中的位置是5。由于空格符也是一个字符,所以在串G=“abc defghne”中包含有子串“c def”,而串“cdef”不是串G的子串。串G中第一个字符…e?的位置是6,第二个字符…e?的位置是11。 3.串的比较 如果两个串的长度相等且对应位置上的字符相同,则称这两个串相等。两个串A、B的比较过程是:从前往后逐个比较对应位置上的字符的ASCII码值,直到不相等或有一个字符串结束为止,此时的情况有以下几种: (1)两个串同时结束,表示A等于B; (2)A中字符的ASCII码值大于B中相应位置上字符的ASCII码值或B串结束,表示A大于B;(3)B中字符的ASCII码值大于A中相应位置上字符的ASCII码值或A串结束,表示A小于B。

串的基本操作

串的基本操作 一、实验目的、意义 (1)理解串的堆分配存储结构。 (2)理解用它们表示时插入,生成串,联接串与求子串的算法。 (3)根据具体问题的需要,能够设计出相关算法。 二、实验内容及要求 说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 具体要求: 定义串的堆分配存储,完成串的基本操作:插入,生成串,联接串,求子串等。 三、实验所涉及的知识点 C语言算法、循环算法、串的堆分配存储结构、插入,生成串,联接串与求子串的算法。 四、实验结果及分析 (所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图方式给出。) 五、总结与体会

(调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等。) 调试程序时,出现了许多错误。如:串的堆分配存储结构、串的联接等。另外还有一些语法上的错误。由于对所学知识点概念模糊,试验课上未能完成此次上机作业。后来经过查阅教材,浏览网页等方式,才完成试验。这次试验出现错误最重要的原因就是对课本知识点理解不深刻以及编写代码时的粗心。以后要都去练习、实践,以完善自己的不足。 六、程序清单(包含注释) #include #include #include typedef char Status; int strlen(char *p) { int i=0; while(*p++)i++; return i; } typedef struct { char *ch; // 若是非空串,则按串长分配存储区,否则ch为NULL int length; // 串长度 }HString; // 初始化(产生空串)字符串T void InitString(HString *T) { (*T).length=0; (*T).ch=NULL; } // 生成一个其值等于串常量chars的串T Status StrAssign(HString *T, char *chars) { int i,j; if((*T).ch) free((*T).ch); // 释放T原有空间 i = strlen(chars); // 求chars的长度i if(!i)

数据结构大作业含源代码

数据结构大作业 作业题目:职工信息管理系统 姓名: 学号: 班级: 指导教师: 日期:

一、主要功能: 这个职工信息管理系统是由C语言编写的程序,它用起来很方便又很灵活。它由输入职工信息,输出职工信息,按职工号,部门号,工资排序,按职工号,部门号,工资来输出职工的所有信息。删除有关职工的所有信息,保存职工的所有信息并退出等11个模块儿组成。 二、实验环境:C语言、C++、C# 等等。 三、功能说明: 下面按步骤来介绍一下,职工信息管理系统的基本操作。 这是运行程序以后出现的主界面。如图(1)所示: 图(1)主界面 1.输入职工的信息 该模块儿的功能是分别输入职工的姓名,职工号,部门号,工资等信息。每次输入职工的所有信息以后,界面上会显示出《输入完成!》的命令。如图(2)所示:

图(2)输入职工信息 2.输出所有的职工信息 该模块儿的功能是显示出有关职工的所有信息。操作如图(3)所示: 图(3)输出所有的职工信息 3.按职工号排序 该模块儿的功能是按职工号排序所有的职工。我们按3的时候,界面上会显示出《排序完成!》的命令。如图(4)所示:

图(4)按职工号排序 4.输出所有的职工号码 该模块儿的功能是显示出已排序好的所有职工的号码。操作如图(5)所示: 图(5)输出所有的职工号 5.按部门号排序 该模块儿的功能是按部门号排序所有职工的部门号。我们按5的时候,界面上会显示出《排序完成!》的命令。如图(6)所示:

图(6)按部门号排序 6.输出所有的部门号 该模块儿的功能是显示出已排序好的所有部门号。操作如图(7)所示: 图(7)输出所有的部门号 7.按职工的工资排序 该模块儿的功能是按工资排序所有职工的工资。我们按7的时候,界面上会显示出《排序完成!》的命令。如图(8)所示:

ppt幻灯片的基本操作

ppt幻灯片的基本操作 ppt幻灯片的基本操作添加幻灯片 默认情况下,启动powerpoint2003时,系统新建一份空白演示文稿,并新建1张“标题幻灯片”。 我们可以通过下面三种方法,在当前演示文稿中添加新的幻灯片: 方法一:快捷键法。 按“ctrl+m”组合键,即可快速添加1张空白幻灯片。 方法二:回车键法。 在“普通视图”下,将鼠标定在左侧的窗格中,然后按下回车键(enter),同样可以快速插入一张新的空白幻灯片。 方法三:命令法。 执行“插入→新幻灯片”命令,也可以新增一张空白幻灯片。 新建一个演示文稿文件与插入一张新幻灯片的异同: 1、一个演示文稿文件可以包含多张幻灯片,幻灯片是演示文稿文件所包含的内容。 2、工具栏上的“新建”按钮的功能是新建一个演示文稿文件。 3、菜单栏中的“插入->新幻灯片”命令是在当前演示文稿文件内插入一张新幻灯片。 复制/剪切幻灯片 单击要复制或剪切的幻灯片,将它选中选择“编辑”菜单中

的“复制”或者“剪切”命令,在目标位置单击鼠标,选择“编辑”菜单中的“粘贴”命令。 快捷键:复制:ctrl+c 剪切:ctrl+x 粘贴:ctrl+v “复制”命令保留源对象,而“剪切”命令将删除源对象。 移动幻灯片 在普通视图下的“幻灯片”选项卡,或者在幻灯片浏览视图下,选中要移动的幻灯片按住鼠标左键拖动,这时鼠标指针下方将出现一个方框,然后到目标位置后释放鼠标即可移动。或者先将要移动的幻灯片剪切,再粘贴到目标位置。移动的幻灯片可是一张或是多张。 删除幻灯片 选中要删除的幻灯片,单击鼠标右键,在弹出的快捷菜单中选择“删除幻灯片”命令或者按delete键。 选择幻灯片的小技巧: 同时选取连续多张幻灯片:按alt键,分别单击范围内第一张和最后一张。同时选取不连续多张幻灯片:按ctrl键,分别单击范围内每一张。

串的基本操作

1上机实训3:串的基本操作 一、实训目的 通过实训,掌握串的运算(赋值,比较,联结,插入子串,模式匹配……等) 二、实验理论知识 1)串的基本概念及其含义 串( string)是由零个或多个字符组成的有限序列,一般记作: s='a1a2…an'(n≥0),其中s为串的名字,用单引号括起来的字符序列为串的值;ai(1≤i≤n)可以是字母、数字或其它字符(取决于程序设计语言所使用的字符集);n为串中字符的个数,称为串的长度。 2)串的存储表示及其实现 ●顺序存储 可以用一组地址连续的存储单元依次存放串的各个字符,这是串的顺序 存储结构,也称为顺序串 ●链式存储 和线性表的链式存储结构相类似,也可采用链表方式存储串值。串的这 种链式存储结构简称为链串。用链表存储字符串,每个结点需要有两个 域:一个数据域(data)和一个指针域(Next),其中数据域存放串中的 字符,指针域存放后继结点的地址。 3)模式匹配问题 三、实训案例与分析 【实例1】串的存储与基本运算 【实例分析】在本实例中练习计算字符串的长度、字符串的复制、字符串的比较、字符串的连接、字符串的插入等基本操作。在设计时 1)编写一个菜单函数,根据不同情况做(1-5)不同选择。 2)如果选择1,即要求计算输入字符串的长度。 3)如果选择2,完成字符串的复制。 4)如果选择3,完成字符串的比较。 5)如果选择4,完成两个字符串的连接。 6)如果选择5,字符串的插入。 【参考程序】 #include #define MAX 128

typedef enum {fail,success} status; typedef enum {false,true} boolean; main() { int strlen(); void strass(); boolean strcmp(); status strcat( ); status strins(); int t,n,i; boolean b; status st; char s[MAX],s1[MAX],s2[MAX]; printf("\n1. The length of string\n"); printf(" 2. The assignment of string\n"); printf(" 3. A string compare with another string:\n"); printf(" 4. A string connect with another string:\n"); printf(" 5. A string to be inserted into another string\n"); printf(" Please input a operation:");/*输入操作选项*/ scanf("%d",&t); switch(t) { case 1: printf("please input a string:\n"); getchar(); gets(s); n=strlen(s); printf("the length is: %d",n); break; case 2: printf("please input the first string:\n"); getchar(); gets(s1); printf("please input the second string:\n"); getchar(); gets(s2);

数据结构——二叉树基本操作源代码

数据结构二叉树基本操作 (1). // 对二叉树的基本操作的类模板封装 //------------------------------------------------------------------------------------------------------------------------ #include using namespace std; //------------------------------------------------------------------------------------------------------------------------ //定义二叉树的结点类型BTNode,其中包含数据域、左孩子,右孩子结点。template struct BTNode { T data ; //数据域 BTNode* lchild; //指向左子树的指针 BTNode* rchild; //指向右子树的指针 }; //------------------------------------------------------------------------------------------------------------------------ //CBinary的类模板 template class BinaryTree { BTNode* BT; public: BinaryTree(){BT=NULL;} // 构造函数,将根结点置空 ~BinaryTree(){clear(BT);} // 调用Clear()函数将二叉树销毁 void ClearBiTree(){clear(BT);BT=NULL;}; // 销毁一棵二叉树 void CreateBiTree(T end); // 创建一棵二叉树,end为空指针域标志 bool IsEmpty(); // 判断二叉树是否为空 int BiTreeDepth(); // 计算二叉树的深度 bool RootValue(T &e); // 若二叉树不为空用e返回根结点的值,函数返回true,否则函数返回false BTNode*GetRoot(); // 二叉树不为空获取根结点指针,否则返回NULL bool Assign(T e,T value); // 找到二叉树中值为e的结点,并将其值修改为value。

(2020年7月整理)PPT基本操作及技巧.doc

PPT基本操作及技巧 一、PPT的启动和退出 1、打开方法: 方法一:单击桌面“开始”按钮,选择“程序”→“Microsoft Office”→“Microsoft Office PowerPoint 2003”。这是一种标准的启动方法。 方法二:双击桌面快捷方式图标“Microsoft Office PowerPoint ....”。这是一种快速的启动方法。 2、退出方法: 方法一:单击窗口右上角的“×”。 方法二:关闭所有演示文稿并退出PPT 单击菜单“文件”→“退出”。 二、幻灯片版式的选择 在右侧幻灯片版式中选择并单击需要的版式。教师在实际的课件制作过程中,希望能够自己设计模板,这时可采用“内容版式”中的“空白”版式,进行自由的创作。 三、有关幻灯片的各种操作 应用PPT进行设计的简单过程是:首先按照顺序创建若干张幻灯片,然后在这些幻灯片上插入需要的对象,最后按照幻灯片顺序从头到尾进行播放(可以为对象创建超级链接来改变幻灯片的播放顺序)。 幻灯片在PPT设计中处于核心地位,有关幻灯片的操作包括幻灯片的选择、插入、删除、移动和复制,这些操作既可以在“普通视图”下进行,也可以在“幻灯片浏览视图”下进行。下

面以“普通视图”为例,介绍有关幻灯片的各种操作。在“普通视图”下,PPT主窗口的左侧是“大纲编辑窗口”,其中包括“大纲”和“幻灯片”两个标签,点击“幻灯片”标签,这时将显示当前演示文稿内所有幻灯片的缩略图,每张幻灯片前的序号表示它在播放时所处的顺序,通过拖动滚动条可显示其余幻灯片,有关幻灯片的操作在该区域进行。 1、幻灯片的选择 有许多操作的前提都要求先选择幻灯片,对幻灯片的选择包括单选(选择一张幻灯片)和多选(同时选择多张幻灯片),其中多选又包括连续多选(相邻的多张幻灯片)和非连续多选(不相邻的多张幻灯片),操作方法如下: (1)单选:单击需要选定的幻灯片缩略图(如上图:左侧黄色方框里的幻灯片尾缩略图),缩略图出现蓝色框线,该幻灯片被称作“当前幻灯片”。 (2)连续多选:先单击相邻多张幻灯片的第一张,然后按住Shift键,单击最后一张。 (3)非连续多选:先单击某张幻灯片,然后按住Ctrl键,单击需要选择的幻灯片。 2、幻灯片的插入 在设计过程中感到幻灯片不够用时,就需要插入幻灯片。插入幻灯片有四种方法,分别是: 方法一:先选择某张幻灯片,然后单击菜单“插入”→“新幻灯片”,当前幻灯片之后被插入了一张新幻灯片。

(完整版)Excel表格的基本操作[初学者专用]超级技能

目录 技巧1、单元格内强制换行 技巧2、锁定标题行 技巧3、打印标题行 技巧4、查找重复值 技巧5、删除重复值 技巧6、快速输入对号√ 技巧7、万元显示 技巧8、隐藏0值 技巧9、隐藏单元格所有值。 技巧10、单元格中输入00001 技巧11、按月填充日期 技巧12、合并多个单元格内容 技巧13、防止重复录入 技巧14、公式转数值 技巧15、小数变整数 技巧16、快速插入多行 技巧17、两列互换 技巧18、批量设置求和公式 技巧19、同时查看一个excel文件的两个工作表。技巧20:同时修改多个工作表 技巧21:恢复未保存文件 技巧22、给excel文件添加打开密码 技巧23、快速关闭所有excel文件 技巧24、制作下拉菜单 技巧25、二级联动下拉 技巧27、删除空白行 技巧28、表格只能填写不能修改 技巧29、文字跨列居中显示 技巧30、批注添加图片 技巧31、批量隐藏和显示批注 技巧32、解决数字不能求和 技巧33、隔行插入空行 技巧34、快速调整最适合列宽 技巧35、快速复制公式 技巧36、合并单元格筛选

技巧1、单元格内强制换行 在单元格中某个字符后按alt+回车键,即可强制把光标换到下一行中。 技巧2、锁定标题行 选取第2行,视图 - 冻结窗格 - 冻结首行(或选取第2行 - 冻结窗格)冻结后再向下翻看时标题行始终显示在最上面。 技巧3、打印标题行 如果想在打印时每一页都显示标题,页面布局 - 打印标题 - 首端标题行:选取要显示的行

技巧4、查找重复值 选取数据区域 - 开始 - 条件格式 - 突出显示单元格规则 - 重复值。 显示效果:

实验三 串基本操作的实现

实验三串基本操作的实现 专业:计算机科学与技术班级:10计本1班学号:姓名: 实验地点: B102 实验时间: 2011.11.2 指导教师:王润鸿 实验目的 1 理解定长顺序串的存储结构及基本操作的定义; 2掌握定长顺序串的基本操作; 3学会设计实验数据验证程序。 实验环境 计算机,window xp操作系统,VC++6.0 实验内容 1. 存储结构定义: #define MAXSTRLEN 255 //串的长度最大为255 typedef unsigned char SString[MAXSTRLEN+1]; //0号单元存放串的长度,其最大值刚好是255 2. 实现的基本操作: StrAssign (&T, chars) 初始条件:chars 是串常量。 操作结果:赋于串T的值为chars。 StrCopy (&T, S) 初始条件:串S 存在。 操作结果:由串S 复制得串T。 DestroyString (&S) 初始条件:串S 存在。 操作结果:串S 被销毁。 StrEmpty (S) 初始条件:串S 存在。 操作结果:若S 为空串,则返回TRUE,否则返回FALSE。 StrCompare (S, T) 初始条件:串S 和T 存在。 操作结果:若S>T,则返回值=0;若S=T,则返回值<0;若S

数据结构串基本操作代码

实验三串 //串的基本操作 #include "stdio.h" #include "stdlib.h" #define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN+1]; void strlength(SString S)//求字串并放到 S[0] 中 { int m; for(m=1;S[m]!='\0';m++); S[0]=m-1; } void insert(SString S,int n,char a)//是插入的位置 a 是插入的字符{ strlength(S); int i; for(i=S[0];i>=n;i--) S[i+1]=S[i]; S[n]=a; S[S[0]+2]='\0'; } int compare(SString S,SString T) { strlength(S); strlength(T); int i; for(i=1;i<=S[0]&&i<=T[0];i++) { if(S[i]>T[i]) return 1; if(S[i]T[0]) return 1;

else if(S[0]S[0]||len<0||len>S[0]-pos+1) { printf("Error!position or length is out of range\n"); return 0; } for(i=1;i<=len;i++)

数据结构串的操作实验报告

实验报告 课程数据结构实验名称实验三串 学号姓名实验日期: 串的操作 实验目的: 1. 熟悉串类型的实现方法,了解简单文字处理的设计方法; 2. 熟悉C语言的字符和把字符串处理的原理和方法; 3. 熟悉并掌握模式匹配算法。 实验原理: 顺序存储结构下的关于字符串操作的基本算法。 模式匹配算法BF、KMP 实验内容: 4-19. 在4.4.3节例4-6的基础上,编写比较Brute-Force算法和KMP算法比较次数的程序。 4-20. 设串采用静态数组存储结构,编写函数实现串的替换Replace(S,start,T,V),即要求在主串S中,从位置start开始查找是否存在字串T。若主串S中存在子串T,则用子串V替换子串T,且函数返回1;若主串S中不存在子串T,则函数返回0;并要求设计主函数进行测试。一个测试例子为:S=“I am a student”,T=“student”,V=“teacher”。程序代码: 4-19的代码: /*静态存储结构*/ typedef struct { char str[MaxSize]; int length; }String; /*初始化操作*/ void Initiate(String *S) { S->length=0; } /*插入子串操作*/ int Insert(String *S, int pos, String T) /*在串S的pos位置插入子串T*/ { int i; if(pos<0||pos>S->length) { printf("The parameter pos is error!\n"); return 0; } else if(S->length+T.length>MaxSize)

实验一 演示文稿的基本操作

实验一演示文稿的基本操作 [实验目的] 1、了解PowerPoint2000的启动和退出 2、熟悉PowerPoint2000的窗口组成 3、熟练掌握创建演示文稿 4、熟练掌握演示文稿的保存与打开 5、掌握视图的切换 6、熟练掌握在幻灯片中插入与编缉文本及各种对象 7、掌握幻灯片的插入与删除、移动与复制 [实验内容 一、PowerPoint 2000的启动与退出 [实验1] 启动PowerPoint 2000 [指导步骤] (1)单击任务栏上的“开始”按钮,执行“程序――Microsoft PowerPoint”命令,启动PowerPoint 2000,如图5-1-1所示。 图5-1-1 (2)选中“空演示文稿”选项,单击“确定”按钮,出现“新幻灯片”对话框,直接单击“确定”按钮,建立一个空白的演示文稿。 [实验2] 退出PowerPoint 2000。 [指导步骤] 方法1:单击标题栏最右端的关闭按钮或按ALT+F4键,即可退出。 方法2:双击标题栏最左端的菜单图标,也可退出。 方法3:执行“文件―退出”菜单命令,也可以退出PowerPoint2000。 二、PowerPoint2000的窗口的组成 [实验] 了解PowerPoint2000的窗口组成。 [指导步骤] (1)启动PowerPoint2000,出现“PowerPoint2000”对话框,选中“空演示文稿”

选项,单击“确定”按钮。 (2)出现“新幻灯片”对话框,直接单击“确定”按钮,建立一个空白的演示文稿,如图5-1-2所示。 图5-1-2 三、建立演示文稿 1、利用“内容提示向导”建立演示文稿 [指导步骤] (1)启动PowerPoint,在出现的“PowerPoint”对话框中“内容提示向导” 选项,单击“确定”按钮。 (2)出现“内容提示向导”对话框,直接单击“下一步”按钮,进入下一个对话框,如图所示5-1-3所示。

串的基本操作

i 串的基本操作 一、 实验目的、意义 (1) 理解串的堆分配存储结构。 (2) 理解用它们表示时插入,生成串,联接串与求子串的算法。 (3) 根据具体问题的需要,能够设计出相关算法。 二、 实验内容及要求 说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输 入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修 改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 具体要求: 定义串的堆分配存储,完成串的基本操作:插入,生成串,联接串,求子串 三、实验所涉及的知识点 C 语言算法、循环算法、串的堆分配存储结构、插入,生成串,联接 串与求子串的算法。 四、实验结果及分析 (所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图 方式给出。) F 'E=?JK^?t?iS^?Deb ug?T extl .e κe 1 n 呂扇: c-?S 》爭t -託联接串0产主的串片为:GOd bιje!God luck? :GOd bj/ef &串空否? ?<1: X 肌否) GDd Inch? ?s70 ≡ OO ??串t 相同的子串用串討弋普后.串晚: GQqd by^tGood Iucl

数据结构-串的查找与替换不会源程序

数据结构课程设计 ———串的查找与替换、

目录 (一)设计思路 (1) (二)问题描述 (1) (三)内容要求 (1) (四)设计目的 (1) (五)设计实现 (5) (六)设计调试 (10) (七)设计总结 (15) (八)参考文献 (15)

(一)设计目的 数据结构课程设计的目的是:通过设计掌握数据结构课程中学到的基本理论和算法并综合运用于解决实际问题中,它是理论与实践相结合的重要过程。设计要求会如何对实际问题定义相关数据结构,并采用恰当的设计方法和算法解决问题,同时训练学生进行复杂程序设计的技能和培养良好的程序设计习惯。 (二)问题描述: 打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。 (三)内容要求: 1.根据题目要求进行需求分析,分析出该项任务的主要功能和设计重点。 2.根据需求分析的内容划分模块 3.进行程序设计 (四)设计思路 计算机上的非数值处理的对象基本上上字符串数据,字符串一般简称为串。串(string)是由零个或多个字符组成的有限序列,一般记为s=`a1a2…an`(n 大于零)。通常称字符在序列中的序号为该字符在串中的位置,子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。当两个串的每个字符都相等时(串值相等),称这两个串是相等的。 在子串的查找定位过程中,分别利用计数指针j和k指示被替换串和替换串中当前正待比较的字符位置。所用算法的基本思想是:首先利用指针i来完成被替换串和替换串在文本中的遍历,从被替换串和替换串的第一个字符起进行比较,若相等则继续逐个比较后续字符;否则完成一次比较,指针i递增进行下一次的比较。以此类推,直至匹配成功。 现根据问题描述作如下分析: 首先利用标准库函数fopen()打开一个文件,然后从文件中读取字符串保

PPT基本操作

Powerpoint教程 PowerPoint是微软公司推出的Microsoft Office2003办公套件中的一个组件,专门用于制作演示文稿(俗称幻灯片)。广泛运用于各种会议、产品演示、学校教学。 本文主要介绍PowerPoint2003的软件界面、普通演示文稿的制作流程、powerpoint2003的基本操作,并通过一个实例制作过程帮助大家快速上手做出自己的演示文稿。 一、PowerPoint2003的工作界面 启动PowerPoint2003,一个同Word2003很接近的窗口就呈现在你的面前了(如图A)。 ①标题栏:显示出软件的名称(Microsoft PowerPoint)和当前文档的名称(演示文稿1);在其右侧是常见的“最小化、最大化/还原、关闭”按钮。 ②菜单栏:通过展开其中的每一条菜单,选择相应的命令项,完成演示文稿的所有编辑操作。其右侧也有“最小化、最大化/还原、关闭”三个按钮,不过它们是用来控制当前文档的。 ③“常用”工具条:将一些最为常用的命令按钮,集中在本工具条上,方便调用。 ④“格式”工具条:将用来设置演示文稿中相应对象格式的常用命令按钮集中于此,方便调用。 ⑤“任务窗格”:这是PowerPoint2003新增的一个功能,利用这个窗口,可以完成编辑“演示文稿”一些主要工作任务。 ⑥工作区:编辑幻灯片的工作区,制作出一张张图文并茂的幻灯片,就在这里向你展示。⑦备注区:用来编辑幻灯片的一些“备注”文本。 ⑧大纲区:在本区中,通过“大纲视图”或“幻灯片视图”可以快速查看整个演示文稿中的任意一张幻灯片。 ⑨“绘图”工具栏:可以利用上面相应按钮,在幻灯片中快速绘制出相应的图形。

实验三串基本操作的编程实现

实验三串基本操作的编程实现 【实验目的】 容:串基本操作的编程实现 要求: 串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或结构、索引结构中任选,也可以全部实现。也鼓励学生利用基本操作进行一些应用的程序设计。 【实验性质】 验证性实验(学时数:2H) 【实验容】 字符串用常规的顺序存储法来存储,实现常用的功能。 自己编程模式:开发一个程序,用来统计文件中各种信息,如字符个数,行数等。 修改程序模式:将下面程序空白的地方填空。 程序检查模式:将本文件夹中的程序运行后总结相关功能。 【思考问题】 1.字符串的顺序存储和链表存储的差异?C语言中是如何实现字符串的? 2.在字符串处理方面主要有什么操作? 3.字符串的操作的主要特点是什么? 4.举出几个字符串的应用例? 【参考代码】 //功能:顺序串的基本基本功能 #include #include #include #include #define maxsize 30//顺序串的总空间大小 enum returninfo{success,fail,overflow,underflow,range_error,empty};//定义返回信息清单 class string { public: string();//构造函数 ~string();//析构函数 returninfo strcreate(); //创建串 returninfo strinsert(int position,char newstr[],int str_length); //插入 returninfo strdelete(int beginposition,int endposition); //删除 returninfo strmodify(int beginposition,int endposition,char newstr[]); //修改 int strsearch(char newstr[]); //查找

数据结构伪代码转化成为可执行源代码修订稿

数据结构伪代码转化成为可执行源代码 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

数据结构伪代码转化为源代码尊重原作者的劳动,我只是个学习者,见此文章,感觉很有用,愿与大家一起分 享 -----百度文库:桔紫蓝 */ -------------------------------------------------------------------------------------- */ 出自:编程中国 */ 时间: 2007-10-26编程论坛首发 */ 声明:尊重作者劳动,转载请保留本段文字 */ -------------------------------------------------------------------------------------- 前言:这些是前几年我在大专教书时,数据结构课程中给学生写的学习例程,对于初学者有一定帮助。在此收集到一起,当个共享贴贡献给广大网友和编程爱好者。一般程序都不难也不大,并且所有例程均有较详细注释,适合自学。中间有一个“哈夫曼编码”,程序较大,希望能给大家一点启示。以下所有程序均在VC++开发环境中调试通过,运行正常。有任何疑问可以“另外”发贴讨论。更多内容请访问我的博客。 自认为本贴内容充实,对网友会所很大帮助,请版主或者管理员置顶加精,谢谢。 数据结构与算法基本程序目录 一、线性表及其操作 1、尾插法建立一个单链表,并按顺序输出 2、单链表的元素查找,按内容查找 3、元素插入操作 4、按内容元素删除操作 5、按位置删除元素

6、建立双向链表 7、单链表就地逆置 8、约瑟夫环问题 二、栈及其操作 1、建立堆栈 2、进栈与出栈 3、栈的应用,括号匹配 三、队及其操作 1、链队列的建立 2、入队和出队 3、循环队列建立 4、循环队列的入队和出队操作 四、串及其操作 1、串的朴素匹配 五、树(二叉树)及其操作 1、二叉排序树 2、哈夫曼编码 六、排序 1、冒泡排序 2、直接选择排序法 一、线性表及其操作

相关主题
文本预览
相关文档 最新文档