数据结构c语言版课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构(c语言版)》课程设计报告

链式串的实现

学院:信息科学技术学院

班级:信息工程2009级 1 班

学号:************

*名:***

指导教师:***

完成日期:2010年12月

目录

一、需求分析………………………………………………P1

二、概要分析………………………………………………P3

三、详细设计………………………………………………P5

四、调试分析………………………………………………P14

五、用户手册………………………………………………P15

六、测试结果………………………………………………P15

七、附录……………………………………………………P17

一、需求分析

(1)输入的形式和输入值的范围

先输入一个int型数来选择操作,输入值的范围为1-8

再跟据所选的操作根据提示输入,若要输入一个字符串,则要输入一组char 型字符,其他的输int型数,字符串的长度为1-100

(2)输出的形式:字符串型

(3)程序所要表达的功能

用链表作为字符串的存储结构,实现字符串的新建,插入,删除,KMP算法,复制,2个字串的拼接,字符串的比较,求字符串的长度等操作。

(4)测试数据

如下截图:

二、概要设计

1、类型定义

typedef struct LiNode//类型定义一个链表节点{

char data; //数据域

struct LiNode * next; //指针域指向下个结点}LinkString;

2、各个功能函数

void Interface(); //界面函数

void Print(); //输出函数

void ShowStr(LinkString *s); //展示函数

int LengthStr(LinkString * s); //求字符串长度函数

void CopyStr(LinkString *&s,LinkString *t);//复制函数

void StrCreate(LinkString *&s); //创建字符串函数

int CompStr(LinkString * s,LinkString * t);//比较函数

LinkString *InsStr(LinkString * s,int i,LinkString * t);//插入函数

LinkString *DelStr(LinkString * s,int i,int j);//删除函数

LinkString *ConcatStr(LinkString *s,LinkString *t);//拼接函数

/**************KMP算法实现模式匹配*******************/

void GetNextval(LinkString*s,int nextval[]);

int Index_KMP(LinkString*s,LinkString*t);

3、程序模块层次调用

三、详细设计

1、首先对程序所要用到的数据类型进行定义:

宏定义:#define Maxsize 100

类型定义:

typedef struct LiNode

{

char data; //数据域

struct LiNode * next; //指针域指向下个结点

}LinkString;

2、各个功能函数的具体算法

1 StrCreate(创建字符串)

void StrCreate(LinkString *&s)

{

int i,k;

LinkString *r,*p;

printf("Please input the length of the string that you wanna create:\n");

printf("length=");

scanf("%d\n",&k);//给创建的字符串一个长度

s=(LinkString *)malloc(sizeof(LinkString));

r=s;

char t;

for(i=0;i

{

scanf("%c",&t);//一个个字符输入

p=(LinkString * )malloc(sizeof(LinkString));

p->data=t;//将字符储存到结点P中

p->next=NULL;

r->next=p;//将p赋给指针r所指变量的next域

r=p;

}

}

2 InsStr(字符串的插入)

LinkString *InsStr(LinkString * s,int i,LinkString * t)

{

int k;

LinkString * str, * p=s->next, * p1=t->next, *q, *r;

str=(LinkString * )malloc(sizeof(LinkString));

str->next=NULL;

r = str;

if(i<=0||i>LengthStr(s)+1) //参数不正确时返回空串

//(当插入的位置是不大于零or位置比串的长度还大一个)

{

printf("Parameter is not correct!\n");

return str;

}

for(k=1;k

{

q=(LinkString * )malloc(sizeof(LinkString));

q->data=p->data;

q->next=NULL;

r->next=q;

r=q;

p=p->next;

}

while(p1!=NULL) //将t的所有结点复制到str

{

相关文档
最新文档