串的基本操作的实现

串的基本操作的实现
串的基本操作的实现

2.串的基本操作的实现

【案例描述】

编写一个程序,实现求串长Length_Str、Assign_Str、串连接Concat_Str、子串Sub_Str和串比较Compare_Str等串的5种基本操作。

【案例要求】

(1)串采用链式储存结构,链式存储结构类型如下:

typedef strtuct CNode{

char ch;

strnct CNode *next;

}CNode, *LinkString;

(2)所设计的程序应实现如下串的操作:

1求串长Length_Str;

2串赋值Assign_Str;

3串连接Concat_Str;

4求子串Sub_Str;

5串比较Compare_Sr。

【案例分析】

因为串是一种特殊的线性表,所以采用顺序存储结构实现的串同链表的各种操作类似,我们可以参考链表的一些特殊操作方法来实现链式存储的串的各种操作。

【案例实现】

#include *stdio.h*

Typedef strtuct CNode{

Char ch;

Struct CNode *next;

}CNode, *LinkString;

/*链串的创建Creat_LStr()*/

{ LinkString S,R,P;/*S,R,P分别是头指针、尾指针和指向新结点的指针*/

Char ch;

S=R=NULL;

ch=getchar();

while(ch!=’#’)

{p=(LinkString)malloc(sizeof(CNode));

p->ch=ch;

if(S==NULL) S=p;

else R->next=p;

R=p;

ch=getchar();

}

If (R) R->next=NULL;/*尾结点的生成*/

return (S);

}

/*求串长Length_LStr()*/

Int Length_LStr(LinkString S)

{/*返回S的元素个数,称为串长度*/ LinkString p;

Int len=0;

p=S;

while (p!=NULL)

{len++;

p=p->next;

}

return len;

}

/*串赋值Assign_LStr()*/

V oid Assign_LStr(LinkString T , LinkString S) {LinkString p1,p2;

P1=T;

P2=S;

while(p2)

{p1->ch=p2->ch;

p1->next=(LinkString)malloc(sizeof(CNode)); p1=p1->next;

p2=p2->next;

}

p1->next=NULL;/*处理尾结点*/

}

/*串连接Concat_LStr()*/

V oid Concat_LStr(LinkString S, LinkString T)

{ /*将串T连接到串S之后*/

LinkString p1;

If (S==NULL) S=T;

else

{

p1=s;

while(p1->next) p1=p1->next;

p1->next=T;

}

}

/*求字串Sub_Str*/

LinkString Sub_Str(LinkString S, int I,int len)

{/*返回从串S的第i个字符开始的长度为len的子串*/ LinkString p,T;

int L,j,k;

L=Length_LStr(S);

if (i<1||i>l||len<0||len

{ printf (“参数错误“);exit(0);}

else

{p=S;j=1;

While(j

{p=p->next;

j++;

}

T=p;

k=1;

while(k

{p=p->next;

k++;

}

p->next=NULL;

return T;

}

}

/*串比较Strcmp_LStr()*/

Int Strcmp_LStr(LinkString S, LinkString T)

{/*若S>T,则返回值>0;若S=T,则返回值=0;若S

LinkString p1,p2;

P1=S;P2=t;

while(p1&&p2)

{if(p1->ch= =p2->ch)

{p1=p1->next;

P2=p2->next;

else return(p1->ch-p2->ch); }

return(0);

}

void shuchu(LinkString S) {/*输入串值*/

LinkString p;

p=S;

while(p)

{printf(“%c”,p-ch);

p=p->next;

}

main()

{LinkString T,S;

int cmp,Length;

S=Creat_LStr();

Length=Length_LStr(S);

printf(“%d\n”,length);

printf(“输出字符串S:”);

shuchu(S);

T=Creat_LStr();

Assign_LStr(T,S);

printf(“输出字符串T:”);

shuchu(T);

Concat_LStr(S,T);

printf(“输出S和T连接以后的字符串:”); shuchu(S)

T=Sub_Str(S,3,4);

printf(“输出S的子串:”);

shuchu(T);

cmp=Strcmp_LStr(S,T);

printf(“\n%d”,cmp);

}

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将打开“常用”工具栏和“格式”工具栏,并且两个工具栏默认为并排显示(显示在同一行中),将两个工具栏分两行排列的方法为:执行“工具”菜单的“自定义”命令,在弹出的对话框中选中“分两排显示‘常用’工具栏和‘格式’工具栏”选项,或者拖动工具栏左端的移动柄到需要的位置。

串的基本操作

串的基本操作 一、实验目的、意义 (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)

队列的基本操作代码

队列的基本操作代码: #include #include #define MAXQSIZE 100 #define OVERFLOW 0 #define ERROR 0 #define OK 1 typedef int QElemType; typedef int Status; typedef struct { QElemType *base; int front; int rear; int tag; }SqQueue; Status InitQueue(SqQueue &Q) { Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType)); if(!Q.base) exit(OVERFLOW);//存储分配失败 Q.front=Q.rear=0; tag=0; return OK; } int QueueLength(SqQueue Q) { return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;//返回Q的元素个数,即队列的长度} Status EnQueue(SqQueue &Q,QElemType e) { if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR;//队列满 Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXQSIZE; return OK; } Status DeQueue(SqQueue &Q,QElemType &e) { if(Q.front==Q.rear) return ERROR; e=Q.base[Q.front];

数据结构《第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。

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);

队列的基本操作及其应用

广西工学院计算机学院 《数据结构》课程实验报告书实验四队列的基本操作及其应用 学生姓名:李四 学号:2012 班级:计Y124 指导老师:王日凤 专业:计算机学院软件学院 提交日期:2013年6月20日

1.实验目的 1)通过对队列特点的分析,掌握队列的存储结构及其基本操作,学会定义队列的顺序存储结构和链式存储结构,在实际问题中灵活运用。 2)掌握队列先进先出的特点,掌握队列的基本操作,如出队列、入队列、判队列空、判队列满等,熟悉各种操作的实现方法。 3)通过具体的应用实例,进一步熟悉和掌握队列的实际应用。 2.实验内容 (1)建立一个含n个数据的队列,实现队列的基本操作。包括: ?//1. 初始化,构造一个空队列 void initQueue(Queue &Q) ?//2. 判断队列空, 空则返回true bool QueueEmpty(seqQueue &Q) ?//3. 判断队列满, 满则返回true bool QueueFull(seqQueue &Q) ?//4. 取队头元素, 用x返回队头元素,返回true;空队列则返回false Bool QueueHead(seqQueue &Q, elementType &x) ?//5. 入队列,在队尾插入新元素x (流程图) bool pushQueue (seqQueue &Q, elementType x) ?//6. 出队列,用x带回队头元素,并在队头删除,返回true,队列空则返回false(流程图)bool popQueue (seqQueue &Q, elementType &x) ?//7. 输出队列,从队头到队尾依次输出 void printQueue(seqQueue Q) (2)队列应用:利用队列操作打印杨辉三角形的前n行(如n=7)。 3.实验要求 (1)上机前交实验源程序(纸质版),由学习委员统一收好交老师(附上不交同学名单)。 (2)用一切你能想到的办法解决遇到的问题,培养解决问题的能力。 (3)实验课上进行答辩。 (4)实验报告当场交。报告内容包括:实验目的、实验内容、实验代码、实验输入输出结果以及实验体会供五部分。

(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、幻灯片的插入 在设计过程中感到幻灯片不够用时,就需要插入幻灯片。插入幻灯片有四种方法,分别是: 方法一:先选择某张幻灯片,然后单击菜单“插入”→“新幻灯片”,当前幻灯片之后被插入了一张新幻灯片。

试验 --循环队列的基本操作及应用

数据结构实验报告 ----试验三循环队列的基本操作及应用 一、问题描述: 熟悉并掌握循环队列的相关操作,自己设计程序,实现循环队列的构造、清空、销毁及队列元素的插入和删除等相关操作。 二、数据结构设计: #define MAXQSIZE 10 //最大队列长度 struct SqQueue { QElemType *base; //初始化动态分配存储空间 Int front; // 头指针,若队列不空,只想对列头元素 int rear; //尾指针,若队列不空,指向队列尾元素的 //下一个位置 }; 三、功能设计: 程序中所涉及到的函数如下: Status InitQueue(SqQueue &Q) //构造一个空队列Q Status DestroyQueue(SqQueue &Q) //销毁队列Q,Q不再存在 Status ClearQueue(SqQueue &Q) //将Q清为空队列 Status QueueEmpty(SqQueue Q) //若队列Q为空队列,则 //返回TRUE,否则返回FALSE int QueueLength(SqQueue Q) //返回Q的元素个数,即队列长度Status GetHead(SqQueue Q,QElemType &e)//若队列不空,则用e返回Q的对 //头元素,并返回OK,否则返回ERROR Status EnQueue(SqQueue &Q,QElemType e)//插入元素e为Q的新的队尾元素Status DeQueue(SqQueue &Q,QElemType &e)//若队列不空,则删除Q的队头 //元素,用e返回其值,并返回 //OK,否则返回ERROR Status QueueTraverse(SqQueue Q,void(*vi)(QElemType))//从队头到队尾依次 //对队列Q中每个元素调用函数 //vi()。一旦vi失败,则操作失败四、源程序: // c1.h (程序名) #include #include #include // malloc()等 #include // INT_MAX等 #include // EOF(=^Z或F6),NULL

栈和队列的基本操作实现及其应用

实验二栈和队列的基本操作实现及其应用 一_一、实验目的 1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。 一_二、实验内容 题目一、试写一个算法,判断依次读入的一个以@为结束符的字符序列,是否为回文。所谓“回文“是指正向读和反向读都一样的一字符串,如“321123”或“ableelba”。 相关常量及结构定义: #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef int SElemType; typedef struct SqStack { SElemType *base; SElemType *top; int stacksize; }SqStack; 设计相关函数声明: 判断函数:int IsReverse() 栈:int InitStack(SqStack &S )

int Push(SqStack &S, SElemType e ) int Pop(SqStack &S,SElemType &e) int StackEmpty(s) 一_三、数据结构与核心算法的设计描述 1、初始化栈 /* 函数功能:对栈进行初始化。参数:栈(SqStack S)。 成功初始化返回0,否则返回-1 */ int InitStack(SqStack &S) { S.base=(SElemType *)malloc(10*sizeof(SElemType)); if(!S.base) //判断有无申请到空间 return -1; //没有申请到内存,参数失败返回-1 S.top=S.base; S.stacksize=STACK_INIT_SIZE; S.base=new SElemType; return 0; } 2、判断栈是否是空 /*函数功能:判断栈是否为空。参数; 栈(SqStack S)。栈为空时返回-1,不为空返回0*/ int StackEmpty(SqStack S) { if(S.top==S.base) return -1; else return 0; } 3、入栈 /*函数功能:向栈中插入元素。参数; 栈(SqStack S),元素(SElemtype e)。成功插入返回0,否则返回-1 */ int Push(SqStack &S,SElemType e) { if(S.top-S.base>=S.stacksize) { S.base=(SElemType *)realloc(S.base,(S.stacksize+1) * sizeof(SElemType));

数据结构3-串及其应用.

实验3:串及其应用 一、实验目的 掌握串类型的实现方法和文本模式匹配方法,熟悉一般文字处理软件的设计方法。 二、问题描述 全屏幕文本编辑器通过终端对文本文件进行创建、插入、删除、修改、存储等操作。用户可完成对文本的插入、删除、修改等功能。 三、实验要求 1、对光标实现如下操作:上、下、左、右移动一个字符位置;向前、后翻页;光标移 至文件首、尾;光标移至本行首、尾。 2、实现基本编辑命令: I----在当前光标前插入内容,按ESC结束 F----在当前光标后插入内容,按ESC结束 D----删除光标所在行 ND---删除光标位置开始的n行 N-----删除光标上的字符 W----将修改后的文本保存下来 Q----退出编辑状态。 四、实验环境

PC微机 DOS操作系统或Windows 操作系统 Turbo C 程序集成环境或Visual C++ 程序集成环境 五、实验步骤 1、在内存开辟可容纳80行大小的编辑工作区和buffer 的修改缓冲区。 2、要求用户输入编辑文件名,对读入的文件建立相应的页表和行表,在文本编辑程序 中设立页指针、行指针、字符指针,分别指示当前操作的页、行、字符。 3、执行插入、删除、修改操作时,将本次操作内容放到缓冲区; 4、操作确定后,将修改后的文本存到文件中。 六、测试数据 自行设定。 七、实验报告要求 实验报告应包括以下几个部分: 1、问题描述; 2、算法的设计描述; 3、测试结果的分析与讨论。 4、设计与实现过程中的体会,进一步的改进设想。 5、实验总结。

八、思考题 1、对命令格式非法等错误做严格检查和适当处理。 2、扩充编辑操作,如对某行进行串替换?

数据结构 栈和队列的基本操作实现及其应用

实验二栈和队列的基本操作实现及其应用 一、实验目的 1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。 2、会用栈和队列解决简单的实际问题。 二、实验内容(可任选或全做) 题目一、试写一个算法,判断依次读入的一个以@为结束符的字符序列, 是否为回文。所谓“回文“是指正向读和反向读都一样的一字符串,如“321123”或“ableelba”。 相关常量及结构定义: # define STACK_INIT_SIZE 100 # define STACKINCREMENT 10 # define OK 1 # define ERROR 0 typedef int SElemType; //栈类型定义 typedef struct SqStack { SElemType *base; SElemType *top; int stacksize; }SqStack; 设计相关函数声明: 判断函数:int IsReverse() 栈:int InitStack(SqStack &S ) int Push(SqStack &S, SElemType e ) int Pop(SqStack &S,SElemType &e) int StackEmpty(s) 题目二、编程模拟队列的管理,主要包括: 出队列、 入队、 统计队列的长度、 查找队列某个元素e、 及输出队列中元素。 [实现提示]:参考教材循环队列的有关算法,其中后两个算法参考顺序表的实现。 题目三、Rails

Description There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, it turned out that the station could be only a dead-end one (see picture) and due to lack of available space it could have only one track. The local tradition is that every train arriving from the direction A continues in the direction B with coaches reorganized in some way. Assume that the train arriving from the direction A has N <= 1000 coaches numbered in increasing order 1, 2, ..., N. The chief for train reorganizations must know whether it is possible to marshal coaches continuing in the direction B so that their order will be a1, a2, ..., aN. Help him and write a program that decides whether it is possible to get the required order of coaches. You can assume that single coaches can be disconnected from the train before they enter the station and that they can move themselves until they are on the track in the direction B. You can also suppose that at any time there can be located as many coaches as necessary in the station. But once a coach has entered the station it cannot return to the track in the direction A and also once it has left the station in the direction B it cannot return back to the station. Input The input consists of blocks of lines. Each block except the last describes one train and possibly more requirements for its reorganization. In the first line of the block there is the integer N described above. In each of the next lines of the block there is a permutation of 1, 2, ..., N. The last line of the block contains just 0. The last block consists of just one line containing 0. Output

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

实验一演示文稿的基本操作 [实验目的] 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

数据结构串基本操作代码

实验三串 //串的基本操作 #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++)

PPT基本操作

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

相关文档
最新文档