欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 做数据结构课程设计的心得体会

做数据结构课程设计的心得体会

时间:2016-01-24 05:31

学习数据结构的心得体会

数据结构学习体会及教学建议时间过的很快,一转眼一学期的数据结构课程就已经快要告一段落了,在接触这么课以前,我觉得编程无非就是会写代码就好了。

然而事实上数据结构对于程序来说,有着非常重要的地位。

随着计算机应用领域的不断扩大,非数值计算的问题占据了当今计算机应用的绝大部分,简单的数据类型已经远远不能满足需要,个数据元素之间的复杂关系已经不是普通数学方程式能够表达的了,所以数据结构就扮演了十分重要的角色。

在学期初,我觉得数据结构还是比较简单的,但可能由于之前c语言学习对指针掌握的不够熟练,导致在数据结构中接触到与指针有关的问题,例如线性表,堆栈,队列,二叉树等问题的时候,都会显得有些吃力。

但是在不断学习数据结构的过程中我也不断加强了对指针的学习,现在我已经能够基本掌握指针的相关知识并且能够熟练运用了。

这一学期的学习下来我发现想要学好数据结构有以下几点经验{虽然可能我的数据结构学的并不是很好}1.初步了解算法思想、原理想要弄清楚一个算法的实现,首先要知道这个算法的大致原理,这是最简单的一步,也是最基础的一步,只有明白算法想要干什么,才能弄清楚相应的代码段是为什么2.钻研课本代码段对于书上的算法代码,我们一定要仔细钻研每一步的具体含义和目的,在此基础上深入的了解算法的实现过程,而不是一味的四级硬背,不仅无聊,而且效率低下。

3.查找各种算法资料例如排序算法,其实历史上有很多不同的排序算法,书上

课程设计心得 体会

把邮箱给我,给你发过去

求一份《数据结构c语言》课程设计的心得体会

一 需求分析:  在该部分中根据设计题目的要求,充分地分析和理解问题,叙述系统的功能要求,明确问题要求做什么

以及限制条件是什么

  1.1问题描述  1.2基本要求  (1) 输入的形式和输入值的范围;  (2) 输出的形式;  (3) 程序所能达到的功能;  二 概要设计  说明本程序中用到的所有抽象数据类型的定义。

主程序的流程以及各程序模块之间的层次(调用)关系。

  1、 数据结构  2、 程序模块  3、各模块之间的调用关系以及算法设计  三 详细设计  实现概要设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);写出出函数和过程的调用关系.  四 测试与分析  测试数据,输出测试的结果,这里的测试数据应该完整和严格。

并对结果进行分析。

  五 总结  总结可以包括 : 课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。

求一份数据结构课程设计报告

\\\/\\\/class CNode.h#ifndef __CNODE_H__#define __CNODE_H__#include using namespace std;struct stData \\\/\\\/出生年月结构{ int m_nYear; int m_nMonth; int m_nDay;};struct stResult \\\/\\\/五门课成绩结构{ double m_dSubject_1; \\\/\\\/自己改成绩的名称 double m_dSubject_2; double m_dSubject_3; double m_dSubject_4; double m_dSubject_5;};struct stStudent \\\/\\\/声明学生信息的结构{ string m_strNumber; \\\/\\\/学生学号 string m_strName; \\\/\\\/姓名 char m_chSex; \\\/\\\/性别 struct stData m_stData; \\\/\\\/出生年月 string m_strAppearance; \\\/\\\/政治面貌 struct stResult m_stResult; \\\/\\\/五门课成绩};typedef class CNode{ private: struct stStudent m_stStudent; CNode* m_Next; public: CNode(); \\\/\\\/构造函数 ~CNode(); \\\/\\\/析构函数 void SetNodeData(); \\\/\\\/设置结点内容的函数成员 stStudent GetNodeData(); \\\/\\\/获取结点内容的函数成员 void SetNodeNext(CNode* _Next); \\\/\\\/设置结点Next指针的函数成员 void ShowNodeData(); \\\/\\\/输出结点内容的函数成员 CNode* GetNodeNext(); \\\/\\\/获取结点Next指针的函数成员}LinkNode;#endif\\\/\\\/class CLinkList#ifndef __CLINKLIST_H__#define __CLINKLIST_H__ #include CNode.htypedef class CLinkList{ private: LinkNode* m_Head; \\\/\\\/链表的头指针 LinkNode m_Node; \\\/\\\/链表的头结点 public: CLinkList(); \\\/\\\/构造函数 ~CLinkList(); \\\/\\\/析构函数 void CreateList(); \\\/\\\/初始化链表的函数成员 LinkNode* GetListNode(int _nIndex); \\\/\\\/按位置查找指定位结点的成员函数 void InsertList(int _nIndex); \\\/\\\/插入结点的成员函数 void DeleteList(int _nIndex); \\\/\\\/删除某一结点的成员函数 LinkNode* GetHeadList(); \\\/\\\/获取头指针的成员函数 void SetListData(int _nIndex); \\\/\\\/设置链表中某一结点的值的成员函数 void ShowListData(int _nIndex); \\\/\\\/这个是现实链表中某一结点值的函数成员 void DestroyList(int _nIndex); \\\/\\\/销毁某一位置以后链表的成员函数 void ShowList(); \\\/\\\/显示链表的成员函数}LinkList;#endif\\\/\\\/class CLinkList#include CLinkList.h#include CNode.hCLinkList::CLinkList() { cout << 这个是构造函数<< endl; m_Head = &m_Node; \\\/\\\/链表的头指针指向头结点 m_Node.SetNodeNext(NULL); \\\/\\\/将头结点的Next指针设置为NULL;}CLinkList::~CLinkList(){ cout << 这个是析构函数 << endl;}void CLinkList::CreateList() \\\/\\\/以向后追加的方式创建一个链表,输入0退出{ int nTemp = 0; \\\/\\\/定义一个临时变量用于标志程序结束 cout << 欢迎来创建链表 ! << endl; CNode * pTemp = NULL; \\\/\\\/定义一个临时结点指针,用来增加新结点用 CNode * pNode = m_Head; \\\/\\\/定义一个标记指针,首先叫其指向头结点 while(1) { pTemp = new LinkNode; cout << 请输入下一个结点的内容! << endl; pTemp->SetNodeData(); \\\/\\\/设置链表中结点的内容 cout << 如果想继续输入下一个学生的信息请输入 1,否则输入 0 << endl; cin >> nTemp; if ('0' == nTemp) { break; } pNode->SetNodeNext(pTemp); \\\/\\\/让链尾的Next指向新建的结点 pNode = pTemp; \\\/\\\/将结尾元素向后移 } cout << 创建链表结束 << endl;}LinkNode* CLinkList::GetListNode(int _nIndex){ cout << 这个是按位置查找指定位结点的成员函数 << endl; LinkNode* pNode = m_Head->GetNodeNext(); \\\/\\\/定义一个临时的结点指针,初始化指向头结点 int Temp = 0; \\\/\\\/定义一个临时的变量,用来标记已检查结点的个数的 if(-1 == _nIndex) \\\/\\\/返回头结点(即头指针) { return m_Head; } if(_nIndex < -1) \\\/\\\/_nIndex控制条件 { cout << 您输入的是错误的位置

<< endl; return 0; } while(pNode != NULL) { if(_nIndex == Temp) { return pNode; } pNode = pNode->GetNodeNext(); \\\/\\\/临时结点向后移动 ++Temp; } return pNode; \\\/\\\/没找到结点就返回NULL}void CLinkList::ShowListData(int _nIndex);void CLinkList::InsertList(int _nIndex) \\\/\\\/插入结点的函数成员{ cout << 这个是插入结点的成员函数 << endl; LinkNode* pNode = GetListNode(_nIndex - 1); \\\/\\\/定义一个结点类的指针,指向的是要插入位置的前一指针 LinkNode* pTemp = new CNode; \\\/\\\/定义一个临时结点指针,用来增加新结点用 pTemp->SetNodeData(); \\\/\\\/设置插入结点的内容 pTemp->SetNodeNext(pNode->GetNodeNext()); pNode->SetNodeNext(pTemp); }void CLinkList::DeleteList(int _nIndex){ cout << 这个是删除某一结点的成员函数 << endl; LinkNode* pNode = GetListNode(_nIndex - 1); \\\/\\\/定义一个结点类的指针,指向的是要删除位置的前一指针 LinkNode* pTemp = NULL; \\\/\\\/定义一个临时结点指针,用来指向要删除的结点 pTemp =pNode->GetNodeNext(); \\\/\\\/把pTemp指向要删除的结点 pNode->SetNodeNext(pTemp->GetNodeNext()); \\\/\\\/把pNode指向要删除的结点的后一个结点 delete pTemp; \\\/\\\/删除结点 pTemp = NULL; }LinkNode* CLinkList::GetHeadList(){ cout << 这个是获取头指针的成员函数 << endl; return m_Head;}void CLinkList::SetListData(int _nIndex){ cout << 这个是设置链表中某一结点的值的成员函数 << endl; CNode *pNode = GetListNode(_nIndex); \\\/\\\/定义一个结点类的指针,指向的是要修改内容位置的结点 pNode->SetNodeData(); \\\/\\\/修改内容}void CLinkList::ShowListData(int _nIndex){ cout << 这个是显示链表中某一结点值的成员函数 << endl; CNode *pNode = GetListNode(_nIndex); \\\/\\\/定义一个结点类的指针,指向的是要获取内容位置的结点 pNode->ShowNodeData(); \\\/\\\/返回想要得到位置的结点内容}void CLinkList::DestroyList(int _nIndex) { cout << 这个是销毁某一位置以后链表的成员函数 << endl; LinkNode* pTemp = GetListNode(_nIndex - 1); \\\/\\\/定义一个结点指针,指向要销毁位置的前一结点 LinkNode* pNode = pTemp->GetNodeNext(); \\\/\\\/定义一个结点指针,指向要销毁位置的结点 while(pTemp->GetNodeNext() != NULL) \\\/\\\/销毁动作的结束条件或初始条件 { pTemp->SetNodeNext(pNode->GetNodeNext()); \\\/\\\/把需要销毁的位置的前结点的Next指向销毁位置的下一个结点 delete pNode; \\\/\\\/销毁结点 pNode = pTemp->GetNodeNext(); \\\/\\\/把pNode重新指向要销毁位置的结点 }}void CLinkList::ShowList(){ cout << 这个是显示链表的成员函数 << endl; int nTemp = 0; \\\/\\\/定义一个临时的整形变量用来控制输入的个数 LinkNode* pTemp = m_Head->GetNodeNext(); \\\/\\\/定义一个结点类指针,指向第0位的结点 if(NULL == pTemp) { cout << 这是个空链 << endl; } while(pTemp != NULL) { pTemp->ShowNodeData(); ++nTemp; if(0 == nTemp % 5 && nTemp != 0) \\\/\\\/控制每行只能输出5个结点的内容 { cout << endl; } pTemp = pTemp->GetNodeNext(); }}\\\/\\\/class CNode#include CNode.hCNode::CNode() \\\/\\\/构造函数 { \\\/\\\/m_stStudent = {0}; m_Next = NULL;}CNode::~CNode() \\\/\\\/析构函数{}void CNode::SetNodeData(){ char* pNumber = new char[30]; \\\/\\\/用来接收字符串的临时变量 char* pName = new char[30]; char* pAppearance = new char[30]; cout << 学生学号: << endl; cin >> pNumber; m_stStudent.m_strNumber = pNumber; cout << 姓名: << endl; cin >> pName; m_stStudent.m_strName = pName; cout << 性别: << endl; cin >> m_stStudent.m_chSex; cout << 出生年月: << endl; cout << m_stData.m_nYear << endl; cin >> m_stStudent.m_stData.m_nYear; cout << m_stData.m_nMonth << endl; cin >> m_stStudent.m_stData.m_nMonth; cout << m_stData.m_nDay << endl; cin >> m_stStudent.m_stData.m_nDay; cout << 政治面貌: << endl; cin >> pAppearance; m_stStudent.m_strAppearance = pAppearance; cout << 五门课成绩: << endl; cout << m_dSubject_1: << endl; cin >> m_stStudent.m_stResult.m_dSubject_1; cout << m_dSubject_2: << endl; cin >> m_stStudent.m_stResult.m_dSubject_2; cout << m_dSubject_3: << endl; cin >> m_stStudent.m_stResult.m_dSubject_3; cout << m_dSubject_4: << endl; cin >> m_stStudent.m_stResult.m_dSubject_4; cout << m_dSubject_5: << endl; cin >> m_stStudent.m_stResult.m_dSubject_5; delete []pNumber; \\\/\\\/释放内存 pNumber = NULL; \\\/\\\/指针置空 delete []pName; \\\/\\\/释放内存 pName = NULL; delete []pAppearance; \\\/\\\/释放内存 pAppearance = NULL; }stStudent CNode::GetNodeData() \\\/\\\/返回结点内容(即学生信息){ return m_stStudent;}void CNode::SetNodeNext(CNode* _Next){ m_Next = _Next;}void CNode::ShowNodeData(){ const char* pNumber = m_stStudent.m_strNumber.c_str(); \\\/\\\/用来接收字符串的临时变量 const char* pName = m_stStudent.m_strNumber.c_str(); const char* pAppearance = m_stStudent.m_strAppearance.c_str(); cout << 学生学号: << pNumber << '\\\' << 姓名: << pName << '\\\' << 性别: << m_stStudent.m_chSex; cout << 出生年月: << m_stStudent.m_stData.m_nYear << ',' << m_stStudent.m_stData.m_nMonth << ',' << m_stStudent.m_stData.m_nDay; cout << 政治面貌: << pAppearance << 五门课成绩: << endl; cout << m_dSubject_1: << m_stStudent.m_stResult.m_dSubject_1<< endl; cout << m_dSubject_2: << m_stStudent.m_stResult.m_dSubject_2<< endl; cout << m_dSubject_3: << m_stStudent.m_stResult.m_dSubject_3<< endl; cout << m_dSubject_4: << m_stStudent.m_stResult.m_dSubject_4<< endl; cout << m_dSubject_5: << m_stStudent.m_stResult.m_dSubject_5<< endl;}CNode* CNode::GetNodeNext(){ return m_Next;}#include CLinkList.h#include CNode.hvoid Text(); \\\/\\\/测试函数声明int main(){ cout << 这是mian函数 << endl; Text(); return 0;}void Text(){ cout << 这个是测试函数 << endl; LinkList* pList = new LinkList; \\\/\\\/创建一个内存链表对象 cout << ------------------CreateList----------------------------- << endl; pList->CreateList(); \\\/\\\/初始化链表的函数成员 pList->ShowList(); cout << endl; cout << ------------------GetListNode----------------------------- << endl; LinkNode* pNode = NULL; \\\/\\\/定义一个临时的结点类指针用于检测查找函数成员 pNode = pList->GetListNode(3); \\\/\\\/按位置查找指定位结点的成员函数的测试 if(pNode) { cout << 用按位置查找的方法找到了指定位结点 << endl; } else { cout << 对不起,用按位置查找的方没有找到指定位结点 << endl; } cout << endl; cout << ------------------InsertList----------------------------- << endl; pList->InsertList(0); \\\/\\\/插入结点的成员函数的测试 pList->ShowList(); cout << endl; cout << ------------------DeleteList----------------------------- << endl; pList->DeleteList(0); \\\/\\\/删除某一结点的成员函数的测试 pList->ShowList(); cout << endl; cout << ------------------GetHeadList----------------------------- << endl; pNode = NULL; pNode = pList->GetHeadList(); \\\/\\\/获取头指针的成员函数的测试 if(pNode) { cout << 已经返回了头指针 << endl; } else { cout << 对不起,头指针为空 << endl; } cout << endl; cout << ------------------GetHeadList----------------------------- << endl; pList->SetListData(3); \\\/\\\/设置链表中某一结点的值的成员函数的测试 pList->ShowList(); cout << endl; cout << ------------------GetListData----------------------------- << endl; cout << pList->ShowListData(3) =; pList->ShowListData(3); \\\/\\\/获取链中某一结点值的成员函数的测试 cout << endl; cout << ------------------DestroyList(3)----------------------------- << endl; pList->DestroyList(3); \\\/\\\/销毁第3位置以后链表的成员函数的测试 pList->ShowList(); cout << endl; cout << ------------------DestroyList(0)----------------------------- << endl; pList->DestroyList(0); \\\/\\\/销毁第0位置以后链表的成员函数的测试 pList->ShowList(); cout << endl; delete pList; \\\/\\\/释放内存 pList = NULL; \\\/\\\/指针置空}你的要求太多 , 没仔细看, 我把我给别人写的赋值给你吧 , 我已经写的很全了,程序有问题可以给我留言

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片