数据结构实训报告
数据结构实验报告_实验报告_

数据结构实验报告想必学计算机专业的同学都知道数据结构是一门比较重要的课程,那么,下面是小编给大家整理收集的数据结构实验报告,供大家阅读参考。
数据结构实验报告1一、实验目的及要求1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。
本实验训练的要点是“栈”和“队列”的观点;二、实验内容1) 利用栈,实现数制转换。
2) 利用栈,实现任一个表达式中的语法检查(选做)。
3) 编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列);三、实验流程、操作步骤或核心代码、算法片段顺序栈:Status InitStack(SqStack &S){S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemTyp e));if(!S.base)return ERROR;S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;}Status DestoryStack(SqStack &S){free(S.base);return OK;}Status ClearStack(SqStack &S){S.top=S.base;return OK;}Status StackEmpty(SqStack S){if(S.base==S.top)return OK;return ERROR;}int StackLength(SqStack S){return S.top-S.base;}Status GetTop(SqStack S,ElemType &e){if(S.top-S.base>=S.stacksize){S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemTyp e));if(!S.base) return ERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;return OK;Status Push(SqStack &S,ElemType e){if(S.top-S.base>=S.stacksize){S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemTyp e));if(!S.base)return ERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;return OK;}Status Pop(SqStack &S,ElemType &e){if(S.top==S.base)return ERROR;e=*--S.top;return OK;}Status StackTraverse(SqStack S){ElemType *p;p=(ElemType *)malloc(sizeof(ElemType));if(!p) return ERROR;p=S.top;while(p!=S.base)//S.top上面一个...p--;printf("%d ",*p);}return OK;}Status Compare(SqStack &S){int flag,TURE=OK,FALSE=ERROR; ElemType e,x;InitStack(S);flag=OK;printf("请输入要进栈或出栈的元素:"); while((x= getchar)!='#'&&flag) {switch (x){case '(':case '[':case '{':if(Push(S,x)==OK)printf("括号匹配成功!\n\n"); break;case ')':if(Pop(S,e)==ERROR || e!='('){printf("没有满足条件\n");flag=FALSE;}break;case ']':if ( Pop(S,e)==ERROR || e!='[')flag=FALSE;break;case '}':if ( Pop(S,e)==ERROR || e!='{')flag=FALSE;break;}}if (flag && x=='#' && StackEmpty(S)) return OK;elsereturn ERROR;}链队列:Status InitQueue(LinkQueue &Q) {Q.front =Q.rear=(QueuePtr)malloc(sizeof(QNode));if (!Q.front) return ERROR;Q.front->next = NULL;return OK;}Status DestoryQueue(LinkQueue &Q) {while(Q.front){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}return OK;}Status QueueEmpty(LinkQueue &Q){if(Q.front->next==NULL)return OK;return ERROR;}Status QueueLength(LinkQueue Q){int i=0;QueuePtr p,q;p=Q.front;while(p->next){i++;p=Q.front;q=p->next;p=q;}return i;}Status GetHead(LinkQueue Q,ElemType &e) {QueuePtr p;p=Q.front->next;if(!p)return ERROR;e=p->data;return e;}Status ClearQueue(LinkQueue &Q){QueuePtr p;while(Q.front->next ){p=Q.front->next;free(Q.front);Q.front=p;}Q.front->next=NULL;Q.rear->next=NULL;return OK;}Status EnQueue(LinkQueue &Q,ElemType e) {QueuePtr p;p=(QueuePtr)malloc(sizeof (QNode));if(!p)return ERROR;p->data=e;p->next=NULL;Q.rear->next = p;Q.rear=p; //p->next 为空return OK;}Status DeQueue(LinkQueue &Q,ElemType &e) {QueuePtr p;if (Q.front == Q.rear)return ERROR;p = Q.front->next;e = p->data;Q.front->next = p->next;if (Q.rear == p)Q.rear = Q.front; //只有一个元素时(不存在指向尾指针) free (p);return OK;}Status QueueTraverse(LinkQueue Q){QueuePtr p,q;if( QueueEmpty(Q)==OK){printf("这是一个空队列!\n");return ERROR;}p=Q.front->next;while(p){q=p;printf("%d<-\n",q->data);q=p->next;p=q;}return OK;}循环队列:Status InitQueue(SqQueue &Q){Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType)); if(!Q.base)exit(OWERFLOW);Q.front=Q.rear=0;return OK;}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];Q.front=(Q.front+1)%MAXQSIZE;return OK;}int QueueLength(SqQueue Q){return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;}Status DestoryQueue(SqQueue &Q){free(Q.base);return OK;}Status QueueEmpty(SqQueue Q) //判空{if(Q.front ==Q.rear)return OK;return ERROR;}Status QueueTraverse(SqQueue Q){if(Q.front==Q.rear)printf("这是一个空队列!");while(Q.front%MAXQSIZE!=Q.rear){printf("%d<- ",Q.base[Q.front]);Q.front++;}return OK;}数据结构实验报告2一.实验内容:实现哈夫曼编码的生成算法。
数据结构实验实训报告范文

一、实验目的1. 理解并掌握数据结构的基本概念和常用算法。
2. 学会使用C语言实现线性表、栈、队列、树和图等基本数据结构。
3. 培养动手实践能力,提高编程水平。
二、实验内容1. 线性表(1)顺序表(2)链表2. 栈(1)顺序栈(2)链栈3. 队列(1)顺序队列(2)链队列4. 树(1)二叉树(2)二叉搜索树5. 图(1)邻接矩阵表示法(2)邻接表表示法三、实验环境1. 操作系统:Windows 102. 编程语言:C语言3. 编译器:Visual Studio 20194. 实验软件:C语言开发环境四、实验步骤1. 线性表(1)顺序表1)定义顺序表结构体2)实现顺序表的初始化、插入、删除、查找等基本操作3)编写测试程序,验证顺序表的基本操作(2)链表1)定义链表结构体2)实现链表的创建、插入、删除、查找等基本操作3)编写测试程序,验证链表的基本操作2. 栈(1)顺序栈1)定义顺序栈结构体2)实现顺序栈的初始化、入栈、出栈、判空等基本操作3)编写测试程序,验证顺序栈的基本操作(2)链栈1)定义链栈结构体2)实现链栈的初始化、入栈、出栈、判空等基本操作3)编写测试程序,验证链栈的基本操作3. 队列(1)顺序队列1)定义顺序队列结构体2)实现顺序队列的初始化、入队、出队、判空等基本操作3)编写测试程序,验证顺序队列的基本操作(2)链队列1)定义链队列结构体2)实现链队列的初始化、入队、出队、判空等基本操作3)编写测试程序,验证链队列的基本操作4. 树(1)二叉树1)定义二叉树结构体2)实现二叉树的创建、遍历、查找等基本操作3)编写测试程序,验证二叉树的基本操作(2)二叉搜索树1)定义二叉搜索树结构体2)实现二叉搜索树的创建、遍历、查找等基本操作3)编写测试程序,验证二叉搜索树的基本操作5. 图(1)邻接矩阵表示法1)定义邻接矩阵结构体2)实现图的创建、添加边、删除边、遍历等基本操作3)编写测试程序,验证邻接矩阵表示法的基本操作(2)邻接表表示法1)定义邻接表结构体2)实现图的创建、添加边、删除边、遍历等基本操作3)编写测试程序,验证邻接表表示法的基本操作五、实验结果与分析1. 线性表(1)顺序表实验结果表明,顺序表的基本操作实现正确,测试程序运行稳定。
数据结构实训论文总结报告

摘要:本文通过对数据结构实训的深入学习和实践,总结了实训过程中的心得体会,对链表、栈、队列、树等常见数据结构进行了详细的分析,探讨了数据结构在实际问题中的应用。
通过实训,提高了数据结构的理解和运用能力,为今后的学习和工作打下了坚实的基础。
一、引言数据结构是计算机科学中一个重要的基础学科,它研究数据的存储、组织、检索和操作。
掌握数据结构对于解决实际问题具有重要意义。
本次实训旨在通过实际操作,加深对数据结构理论知识的理解,提高编程能力,培养解决实际问题的能力。
二、实训内容1. 链表链表是一种常见的数据结构,由一系列节点组成,每个节点包含一个数据和指向下一个节点的指针。
实训过程中,我们学习了链表的创建、插入、删除、查找等操作。
通过实现链表,我们了解了链表在解决实际问题中的应用,如实现动态数组、栈、队列等。
2. 栈栈是一种后进先出(LIFO)的数据结构,只允许在一端进行插入和删除操作。
实训中,我们学习了栈的创建、入栈、出栈、判空等操作。
通过实现栈,我们了解了栈在表达式求值、函数调用栈等场景中的应用。
3. 队列队列是一种先进先出(FIFO)的数据结构,只允许在一端进行插入操作,在另一端进行删除操作。
实训中,我们学习了队列的创建、入队、出队、判空等操作。
通过实现队列,我们了解了队列在广度优先搜索、进程调度等场景中的应用。
4. 树树是一种非线性数据结构,由节点组成,节点之间有父子关系。
实训中,我们学习了二叉树、二叉搜索树、堆等常见树结构。
通过实现树,我们了解了树在查找、排序、优先队列等场景中的应用。
三、实训心得体会1. 理论与实践相结合通过本次实训,我深刻体会到理论与实践相结合的重要性。
在理论学习阶段,我们学习了数据结构的基本概念、原理和方法,但仅有理论知识是远远不够的。
通过实际操作,我们能够更好地理解数据结构的内涵,提高编程能力。
2. 代码规范与优化在实训过程中,我们遵循代码规范,注意代码的可读性和可维护性。
数据结构实训验收报告

一、实训背景随着计算机技术的不断发展,数据结构作为计算机科学领域的基础课程,在软件开发、系统设计、算法分析等方面具有广泛的应用。
为了提高学生对数据结构知识的应用能力,我校计算机科学与技术专业于2021年9月开展了数据结构实训课程。
本次实训旨在通过实际操作,使学生掌握数据结构的基本原理、常用数据结构的实现和应用,提高解决实际问题的能力。
二、实训目标1. 理解数据结构的基本概念和常用数据结构的特点;2. 掌握常用数据结构的实现方法,如数组、链表、栈、队列、树、图等;3. 熟悉算法设计与分析方法,能够根据实际问题选择合适的数据结构和算法;4. 提高编程能力,熟练运用C语言实现数据结构的基本操作和算法;5. 培养团队协作能力,提高沟通与交流能力。
三、实训内容1. 数据结构基本概念及常用数据结构介绍;2. 数组、链表、栈、队列、树、图等数据结构的实现与应用;3. 算法设计与分析方法;4. C语言编程实现数据结构及算法;5. 项目设计与实践。
四、实训过程1. 教师讲解:首先,教师对数据结构的基本概念、常用数据结构及算法设计方法进行讲解,使学生建立初步的理论框架。
2. 编程练习:在讲解过程中,教师结合实例,引导学生运用C语言实现数据结构的基本操作和算法。
学生通过实际编程,巩固所学知识。
3. 项目实践:学生分组进行项目实践,每个小组选择一个实际应用场景,运用所学知识设计并实现一个数据结构及算法。
在项目实践中,学生需要相互协作,共同完成任务。
4. 交流与讨论:在实训过程中,学生遇到问题时,可以与同学、教师进行交流与讨论,共同解决问题。
5. 期末验收:实训结束后,学生进行期末验收,包括上机考试和项目答辩两部分。
上机考试主要考察学生对数据结构及算法的掌握程度;项目答辩主要考察学生的项目设计、实现及解决问题的能力。
五、实训成果1. 学生对数据结构的基本概念、常用数据结构及算法设计方法有了更深入的理解;2. 学生的编程能力得到提高,能够熟练运用C语言实现数据结构的基本操作和算法;3. 学生在项目实践中,培养了团队协作能力和沟通与交流能力;4. 学生在期末验收中,取得了较好的成绩。
数据结构实验报告2篇

数据结构实验报告数据结构实验报告精选2篇(一)实验目的:1. 熟悉数据结构的基本概念和基本操作;2. 掌握线性表、栈、队列、链表等经典数据结构的实现方法;3. 掌握数据结构在实际问题中的应用。
实验内容:本次实验主要包括以下几个部分:1. 线性表的实现方法,包括顺序表和链表,分别使用数组和链表来实现线性表的基本操作;2. 栈的实现方法,包括顺序栈和链式栈,分别使用数组和链表来实现栈的基本操作;3. 队列的实现方法,包括顺序队列和链式队列,分别使用数组和链表来实现队列的基本操作;4. 链表的实现方法,包括单链表、双链表和循环链表,分别使用指针链、双向链和循环链来实现链表的基本操作;5. 综合应用,使用各种数据结构来解决实际问题,例如使用栈来实现括号匹配、使用队列来实现马铃薯游戏等。
实验步骤及结果:1. 线性表的实现方法:a) 顺序表的基本操作:创建表、插入元素、删除元素、查找元素等;b) 链表的基本操作:插入节点、删除节点、查找节点等;c) 比较顺序表和链表的优缺点,分析适用场景。
结果:通过实验,确认了顺序表适用于频繁查找元素的情况,而链表适用于频繁插入和删除节点的情况。
2. 栈的实现方法:a) 顺序栈的基本操作:进栈、出栈、判空、判满等;b) 链式栈的基本操作:进栈、出栈、判空、判满等。
结果:通过实验,掌握了栈的基本操作,并了解了栈的特性和应用场景,例如括号匹配。
3. 队列的实现方法:a) 顺序队列的基本操作:入队、出队、判空、判满等;b) 链式队列的基本操作:入队、出队、判空、判满等。
结果:通过实验,掌握了队列的基本操作,并了解了队列的特性和应用场景,例如马铃薯游戏。
4. 链表的实现方法:a) 单链表的基本操作:插入节点、删除节点、查找节点等;b) 双链表的基本操作:插入节点、删除节点、查找节点等;c) 循环链表的基本操作:插入节点、删除节点、查找节点等。
结果:通过实验,掌握了链表的基本操作,并了解了链表的特性和应用场景。
数据结构实训实验报告

一、实验背景数据结构是计算机科学中一个重要的基础学科,它研究如何有效地组织和存储数据,并实现对数据的检索、插入、删除等操作。
为了更好地理解数据结构的概念和原理,我们进行了一次数据结构实训实验,通过实际操作来加深对数据结构的认识。
二、实验目的1. 掌握常见数据结构(如线性表、栈、队列、树、图等)的定义、特点及操作方法。
2. 熟练运用数据结构解决实际问题,提高算法设计能力。
3. 培养团队合作精神,提高实验报告撰写能力。
三、实验内容本次实验主要包括以下内容:1. 线性表(1)实现线性表的顺序存储和链式存储。
(2)实现线性表的插入、删除、查找等操作。
2. 栈与队列(1)实现栈的顺序存储和链式存储。
(2)实现栈的入栈、出栈、判断栈空等操作。
(3)实现队列的顺序存储和链式存储。
(4)实现队列的入队、出队、判断队空等操作。
3. 树与图(1)实现二叉树的顺序存储和链式存储。
(2)实现二叉树的遍历、查找、插入、删除等操作。
(3)实现图的邻接矩阵和邻接表存储。
(4)实现图的深度优先遍历和广度优先遍历。
4. 算法设计与应用(1)实现冒泡排序、选择排序、插入排序等基本排序算法。
(2)实现二分查找算法。
(3)设计并实现一个简单的学生成绩管理系统。
四、实验步骤1. 熟悉实验要求,明确实验目的和内容。
2. 编写代码实现实验内容,对每个数据结构进行测试。
3. 对实验结果进行分析,总结实验过程中的问题和经验。
4. 撰写实验报告,包括实验目的、内容、步骤、结果分析等。
五、实验结果与分析1. 线性表(1)顺序存储的线性表实现简单,但插入和删除操作效率较低。
(2)链式存储的线性表插入和删除操作效率较高,但存储空间占用较大。
2. 栈与队列(1)栈和队列的顺序存储和链式存储实现简单,但顺序存储空间利用率较低。
(2)栈和队列的入栈、出队、判断空等操作实现简单,但需要考虑数据结构的边界条件。
3. 树与图(1)二叉树和图的存储结构实现复杂,但能够有效地表示和处理数据。
数据结构的实训报告结果

一、实训目的本次数据结构实训旨在通过实践操作,加深对数据结构理论知识的理解,提高解决实际问题的能力。
通过实训,使学生能够熟练掌握各种基本数据结构及其操作方法,并能够将这些知识应用于解决实际问题。
二、实训环境1. 操作系统:Windows 102. 编程语言:C语言3. 开发环境:Visual Studio 20194. 实训教材:《数据结构》(C语言版)三、实训内容本次实训主要内容包括线性表、栈、队列、树、图等基本数据结构的创建、操作和应用。
1. 线性表(1)单链表的创建、插入、删除和查找操作(2)双向链表的创建、插入、删除和查找操作(3)循环链表的创建、插入、删除和查找操作2. 栈(1)栈的创建、入栈、出栈和判断栈空操作(2)应用栈实现括号匹配3. 队列(1)队列的创建、入队、出队和判断队列空操作(2)应用队列实现广度优先搜索4. 树(1)二叉树的创建、插入、删除和遍历操作(2)二叉查找树的创建、插入、删除和查找操作5. 图(1)图的创建、添加边、删除边和遍历操作(2)图的深度优先遍历和广度优先遍历四、实训过程1. 线性表首先,我们学习了单链表、双向链表和循环链表的基本概念和创建方法。
通过编写代码,实现了链表的插入、删除和查找操作。
在实训过程中,我们遇到了一些问题,如链表插入操作时指针的移动、删除操作时避免内存泄漏等。
通过查阅资料和与同学讨论,我们逐步解决了这些问题。
2. 栈接着,我们学习了栈的基本概念和操作方法。
通过编写代码,实现了栈的创建、入栈、出栈和判断栈空操作。
在实训过程中,我们遇到了栈空和栈满的情况,通过设置标志位和循环队列的方法解决了这些问题。
此外,我们还学习了应用栈实现括号匹配,加深了对栈的应用理解。
3. 队列然后,我们学习了队列的基本概念和操作方法。
通过编写代码,实现了队列的创建、入队、出队和判断队列空操作。
在实训过程中,我们遇到了队列空和队列满的情况,通过设置标志位和循环队列的方法解决了这些问题。
数据结构队列的实训报告

一、引言队列是一种先进先出(First In First Out,FIFO)的线性数据结构,它具有在队列尾部插入元素和在队列头部删除元素的特点。
在现实生活中,排队等候、生产流水线等场景都可以用队列来模拟。
队列在计算机科学中有着广泛的应用,如操作系统中的进程调度、缓存管理、广度优先搜索等。
为了更好地理解和掌握队列数据结构,我们进行了一次队列的实训。
二、实训目标1. 理解队列的基本概念和特点;2. 掌握队列的几种实现方式,如循环队列、链队列等;3. 熟悉队列的常用操作,如入队、出队、判断队列是否为空等;4. 能够运用队列解决实际问题。
三、实训内容1. 队列的基本概念队列是一种特殊的线性表,它只允许在队列尾部插入元素,在队列头部删除元素。
队列遵循先进先出的原则,即最先进入队列的元素将最先被删除。
2. 队列的实现方式(1)循环队列:使用数组实现队列,利用循环的思想,将数组的最后一个元素和第一个元素视为相邻,从而实现队列的循环利用。
(2)链队列:使用链表实现队列,每个元素是一个节点,节点包含数据和指向下一个节点的指针。
3. 队列的操作(1)入队:在队列尾部插入元素。
(2)出队:在队列头部删除元素。
(3)判断队列是否为空:判断队列中是否还有元素。
(4)获取队列长度:获取队列中元素的数量。
4. 实验项目(1)实现循环队列:使用数组实现循环队列,实现入队、出队、判断队列是否为空等操作。
(2)实现链队列:使用链表实现链队列,实现入队、出队、判断队列是否为空等操作。
(3)运用队列解决实际问题:使用队列实现一个简单的缓存管理器,模拟生产流水线中的工件处理过程。
四、实验过程及结果1. 实现循环队列(1)初始化队列:创建一个固定大小的数组,用于存储队列元素,并设置头指针和尾指针。
(2)入队操作:将元素插入到队列尾部,若队列已满,则进行扩容。
(3)出队操作:删除队列头部元素,若队列已空,则返回错误信息。
(4)判断队列是否为空:判断头指针是否等于尾指针。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构与算法分析》
课程设计
题目:文字处理程序(字符串的应用)
学生姓名:***
学号:***********
专业班级: B16软件工程1班
指导教师:**
学院: 大数据与计算机学院
2017年12月
目录
一、课程设计题目 (1)
二、开发背景 (1)
三、项目总体设计 (1)
3.1需求分析 (1)
3.2系统功能模块设计 (1)
四、详细实现步骤和流程图 (2)
4.1功能实现展示 (2)
4.2流程图框架 (4)
五、部分具体代码分析及实现 (5)
六、项目总结 (9)
七、参考文献 (9)
一、课程设计题目
文字处理程序(字符串的应用)及简单文本编辑器
二、开发背景
由于对于现在的电脑族对电脑的使用频率逐年增大,对电脑的需要具有依赖性。
其中不乏有对文本的编辑的需求,因此,本次实训周做了一款简单的文本编辑器的应用程序,对文本编辑器的相关功能做了一定的实现,既简单又实用。
本软件为一个简单而且很实用的文本编辑的工具,不但可以进行一些文字的输入和文本的读取,而且,该文本编辑器也可以对文本进行一些保存、另存、剪切、粘贴、删除等常规的操作,是一款比较适合广大普通用户和非计算机专业的用户和文本编辑的处理软件,本软件不但界面友好,功能齐全,而且操作简单。
三、项目总体设计
3.1需求分析
文字处理程序运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件内容。
其中程序基本操作:包括文本的复制、粘贴、剪切、删除、查找、替换等功能。
统计功能:分别统计出文本文件中的各类字符的个数,包括英文字母个数、空格个数、汉字个数、标点符号个数、总字数等并显示统计信息;允许用户统计某一字符串在文章中出现的次数,并显示统计信息;加密和解密:用户可对指定文本文件进行加密和解密操作;用户可保存该文件。
3.2系统功能模块设计
四、详细实现步骤和流程图
4.1功能实现展示
运行主界面
打开文件夹
输入字体界面
另存为
加密保存
保存结果
字母数字空格汉字符号统计
复制、粘贴、剪贴和全选功能
4.2流程图框架
五、部分具体代码展示及实现
字母数字空格汉字符号统计
public class CheckThread extends Thread{
private JTextPane textPane;
private JLabel label;
public CheckThread(JTextPane textPane, JLabel label){
this.textPane = textPane;
bel = label;
}
public void run(){
while(true){
String str = textPane.getSelectedText();
if(str == null){
str = textPane.getText();
}
int letter = 0;
int num = 0;
int space = 0;
int chinese = 0;
int point = 0;
int total = 0;
for(int i = 0; i < str.length(); i++){
char c = str.charAt(i);
if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')){
letter++;
}else if(c >= '0' && c <= '9'){
num++;
}else if(c == ' '){
space++;
}else if(c >= '\u4e00' && c <= '\u9fa5'){
chinese++;
}else{
point++;
}
total++;
}
label.setText("字母:"+letter+" 数字:"+num+" 空格:"+space+" 汉字:"+chinese+" 符号:"+point+"总数:"+total);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
文件创建
public class readfile {
public static void main(String args[])throws IOException {
FileNameExtensionFilter filter=new
FileNameExtensionFilter("*.txt","txt");
JFileChooser fc=new JFileChooser();
fc.setFileFilter(filter);
fc.setMultiSelectionEnabled(false);
int result=fc.showSaveDialog(null);
if (result==JFileChooser.APPROVE_OPTION) {
File file=fc.getSelectedFile();
if (!file.getPath().endsWith(".txt")) {
file=new File(file.getPath()+".txt");
}
System.out.println("file path="+file.getPath());
FileOutputStream fos=null;
try {
if (!file.exists()) {//文件不存在则创建一个
file.createNewFile();
}
fos=new FileOutputStream(file);
fos.write("文件内容".getBytes());
fos.flush();
} catch (IOException e) {
System.err.println("文件创建失败:");
e.printStackTrace();
}finally{
if (fos!=null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}}}
六、项目总结
通过这次的实训,我对程序的设计由来更深层次的认识,也让我对这门编程语言这门课程有了更深的了解。
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
在这次的设计过程中,也让我发现自己对知识掌握还存在着很多的不足知促,比如说在打开一个含有中文的TXT文件时,在中文显示时显示的就是一堆乱码,最终经过老师知道得知,是因为汉字的一两个字节读取的,而我们的编程代码是以一个字节读取的,所以出现错误。
该程序不仅可以利用线性表还可以利用串、单链表司实现。
同时我也明白了自己还有哪些地方需要改进,自己要在哪些地方进行自我的提升。
尤为重要的是,这次课程设计使我们懂得了理论与实际结合是很重要的。
在设计的过程中让我感觉到了很多知识点是还没有掌握的,需要我们自己上网进行搜索查询来解决。
我们应该能独立的去发现问题并解决问题,应用一切资源来帮助自己设计。
需要在今后的学习过程中不断的加强对知识点的掌握,还要多看书,多多地上网查找资料,不断的学习以充实自己。
在这两周的课程设计中我不断地改错,不断地调试。
我的努力终于有了成果。
最让我受益匪浅得失整个设计的过程,这个过程也是我不断学习的一个过程,不仅锻炼了我的实际操作能力,而且培养了严密的思维能力和严谨的态度,增加我对编程的兴趣。
七、参考文献
叶核亚.《数据结构(Java版)(第3版)》.北京:电子工业出版社.2013
年.
刘小晶. 《数据结构实例解析与实验指导——Java语言描述》.北京:清华大学出版.2013年.
徐孝凯. 《数据结构实用教程(Java语言描述)》.北京:清华大学出版.2013年.
陈媛. 《算法与数据结构(Java语言描述)》.北京:清华大学出版.2013年.。