首页 考试资料幻灯片工程技术公务员考试小学教学中学教学大学教学外语资料
数据结构实验书


{int

start,len;

start=strtoint(comm.str[2]); len=strtoint(comm.str[3] ); ,start, len,comm.str[4]); } } } } else if (strcmp(comm.str[0],"index")==0) {if (comm.num!=3) else {if (lookup(comm.str[1])==-1||lookup(comm .str[2])==-1) printf("String %s or %s is not found!n", /*字符串定位*/ wrong!n"); substr(head.strhead[lookup(comm.str[1])]

printf("Parameters

comm.str[1],comm.str[2]); else {int start,flag=-1;

start=strtoint(comm.str[3]); flag=index(head.strhead[lookup(c omm.str[1])],head.strhead[lookup(comm.str[2])],start); if start %d , String else %s is not index!!!n",comm.str[1],start,comm.str[2]); %s start %d ,String %s is index %d!!!n", (flag==-1) printf("String %s

printf("String

comm.str[1],start,comm.str[2],flag); } } }

else

if

(strcmp(comm.str[0],"quit")==0) {printf("Bye break; } Bye!n");

/*退出演示系统*/

else printf("Bad 令动词提示*/ row++; } } int strtoint(STRING { int i=0; int total=0; while(s[i]!= '\0 ') s) /*将字符串转换成整数常量*/ filename or no command!n"); /*错误命

{total=total*10+s[i]-48; i++; } return(total); } int lookup(STRING s)

/*查找串表中是否存在串名所对应的字符串,如存在则返回所对应的位置,否则返回-1*/ {int i;

int look=-1; for (i=0;i<head.curnum;i++) if (strcmp(head.strname[i],s)==0) {look=i; break; } if (look==head.curnum) look=-1;

return(look); } struct {int result i; result c; res; cmdsyna(int row) /*对输入的命令行进行编译*/

struct char

int word=0,start; res.num=-1; for(i=0;(c=cmd[row][i])!= { if(c== ' ') '\0 ';i++)

{word=0; cmd[row][i]= '\0 } else if (word==0) /*出现了一个新的参数,将分离出的各参数以及命令动词放置于参数表中*/ {res.num++; start=i;word=1; res.str[res.num]=&cmd[row][start]; if else if (cmd[row][start]==39) '\0 '; (res.num==0) res.nametype[res.num]=1; ';

{cmd[row][start]=

res.str[res.num]=&cmd[row][start+1]; res.nametype[res.num]=2; } else {if = '9 ') res.nametype[res.num]=3; (cmd[row][start]>= '0 '&&cmd[row][start]<

else } } else {if ';

res.nametype[res.num]=4;

(res.nametype[res.num]==2

&&

c==39)

cmd[row][i]=

'\0

/*处理参数中字符串常量*/ if [i]= '\0'; /*处理参数中整数常量*/ } } return(res); } int index(STRING s,STRING t,int start) (res.nametype[res.num]==3 &&(c<'0'||c>'9')) cmd[row]

/*从串 S 起始置 START 开始查找串 T,如找到,则返回第一次出现的位置,否则返回-1*/ { int i,j; if ((start<0)||(start+length(t)>length(s))||(length(t)==0)) return(-1); else {i=start; j=0; while { if (s[i]==t[j]) {i++;j++;} else {i=i-j+1;j=0;} } (i<length(s)&&j<length(t))

} if (j==length(t)) return(i-length(t)); else return(-1); } void substr(STRING s,int start,int len,STRING v)

/*为新串开辟新的空间,并将从串 S 中 START 起始位置起取 LEN 长度的子串存放起来,把新串的串 名和首地址存放于串表中*/ {int char if i; ch[80]; (start<0&&start>=length(s)) printf("Cannot else {if { (len>=1&&len<=length(s)-start) head.strname[head.curnum]=v; head.strhead[head.curnum]=ch; for(i=0;i<len;i++) ch[i]=s[start+i]; ch[i]= head.curnum++; printf("The } else printf("Cannot } } void concat(STRING s,STRING t,STRING v) be substr!!!n"); string %s :%sn",v,ch); '\0'; be substr!!!n");

/*为新串开辟新的空间,并将两串连接起来存放起来,并输出连接后的字符串,将新串的串名和首地 址存放到串表中*/

{ int i,j; char ch[80];

head.strname[head.curnum]=v; head.strhead[head.curnum]=ch; for (i=0;s[i]!= '\0';i++)

ch[i]=s[i]; for (j=i,i=0;t[i]!= ch[j]=t[i]; ch[j]= '\0'; '\0';i++,j++)

head.curnum++; printf("The string %s } int length(STRING { return(strlen(s)); } int equal(STRING s,STRING t) s) :%sn",v,ch);

/*比较两串是否相等,如相等则返加整数 1,否则返回 0*/ { if else } void assign(STRING s,STRING t) (strcmp(s,t)==0) return 0; return 1;

/*将字符串 T 所指向的字符串的首地址和新串 S 的名称存入于串表相应的位置上,并输出赋值后的字 符串*/ { int look1,look2; if ((look1=lookup(t))==-1) printf("The string %s is not found!n",t);

else

{if ((look2=lookup(s))==-1) {head.strhead[head.curnum]=head.strhead[look1]; head.strname[head.curnum]=s; head.curnum++; } else {head.strhead[look2]=head.strhead[look1];} printf("The string %s } : %sn",s,head.strhead[look2]);}

void

creat(STRING

s,STRING ss)

/*将字符串常量的首地址和串的名称存放于串表相应的位置上,并输出新建后的字符串*/ { head.strhead[head.curnum]=ss; head.strname[head.curnum]=s; head.curnum++; printf("The string %s } 【测试数据】可以自定义一些测试数据,如: 1. CMD>creat 2. CMD>assign 3. CMD>length 4. CMD>concat 5. CMD>index 6. CMD>quit↙ 【说明】 1. 由于 C 语言数组下标是以 0 开始,所以在本程序中使所用到的数组都是以下标 0 开始; 2. 本程序在存放字符串时采用类似堆的存储结构,先定义了一个二维数组来读取每一行命令,在对每一行 命令进行分析以后,将各参数以字符串的形式返回,先进行第一个参数(命令动词)的比较处理,再进行其 作参数的处理,最后执行相应的串操作。 【实验题】 ss tt ss↙ abc ss 'abc' tt tt↙ 0↙ 'abcdef' ss↙ ↙ :%sn",s,ss);

123456789101112131415161718192021222324252627282930

 


 

  【Top

最新搜索

 

数据结构实验指导书 - 数据结构 实验指导书 院别 专业 班级 姓名 计算机学院编 实验一 线性表的顺序存储实验 一、实验目的及要求 1、掌握在TC环境下调试顺序表...

数据结构与算法实验指导书90969 - 数据结构与算法实验指导书 计算机与信息学院 实验一 【实验目的】 顺序表 熟练掌握线性表在顺序存储结构上的基本操作。 【实验...

数据结构实验指导书02 很好!很好!隐藏&gt;&gt; 实验二 2.1 实验目的: 线性表 (1)掌握线性表的顺序存储结构的定义及 C 语言实现。 (2)掌握线性表在顺序存储结构即...

数据结构实验说明书新版 - the principl e of simplified E IA of constr uction pr oject s in the regi on. In te...

数据结构实验指导书 - 数据结构实验指导(C语言版)... 数据结构实验指导书_IT/计算机_专业资料。数据结构实验指导(C语言版) 数据结构实验指导书 江西农业大学计算机与...

数据结构试验指导书V2[1].0 - V 2.0 数据结构与算法 实验指导书 编写: 编写:陆绍飞 校核: 校核:___ 湖南大学软件学院 2011 年 9 月 湖南大学软件学...

数据结构实验指导书(2012.9) - 1.2 实验报告(文档)书写规范 实验报告(文档)应包括以下 7 个方面的内容: 1、问题分析 根据对实验任务的理解, 以无歧义的陈述...

09级《数据结构》实验指导书 - 《数据结构实验指导书》 潘向辉/吴学毅编写 印包学院数字媒体技术专业 2011 年 3 月 实验说明 实验说明 【实验环境】 操作系统:...

空间数据结构基础实验指导书 隐藏&gt;&gt; 《空间数据结构基础》 课程实习指导书实习周数:2 周 学分数:2 一、实习目的 数据结构是一门重要的专业基础课,其特点是理论...

《数据结构(C 语言版) 》实验指导书(非计算机专业适用) 广州大学 2013.1 目 录 实验一 线性表的顺序存储及其操作... 1 实验二 线性表的链式存储及其操作......


 

热点推荐