期刊问答网 论文发表 期刊发表 期刊问答

数据结构课程设计论文范文

  • 回答数

    2

  • 浏览数

    121

chunlio
首页 > 期刊问答网 > 期刊问答 > 数据结构课程设计论文范文

2个回答 默认排序1
  • 默认排序
  • 按时间排序

周东浩129

已采纳
//class CNh#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 "CNh"typedef 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 "CLinkLh"#include "CNh"CLinkList::CLinkList() { cout << "这个是构造函数"<< endl; m_Head = &m_Node; //链表的头指针指向头结点 m_NSetNodeNext(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 "CNh"CNode::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_stS_strNumber = pNumber; cout << "姓名: " << endl; cin >> pName; m_stS_strName = pName; cout << "性别: " << endl; cin >> m_stS_chSex; cout << "出生年月: " << endl; cout << "m_stD_nYear" << endl; cin >> m_stS_stD_nYear; cout << "m_stD_nMonth" << endl; cin >> m_stS_stD_nMonth; cout << "m_stD_nDay" << endl; cin >> m_stS_stD_nDay; cout << "政治面貌: " << endl; cin >> pAppearance; m_stS_strAppearance = pAppearance; cout << "五门课成绩: " << endl; cout << "m_dSubject_1: " << endl; cin >> m_stS_stR_dSubject_1; cout << "m_dSubject_2: " << endl; cin >> m_stS_stR_dSubject_2; cout << "m_dSubject_3: " << endl; cin >> m_stS_stR_dSubject_3; cout << "m_dSubject_4: " << endl; cin >> m_stS_stR_dSubject_4; cout << "m_dSubject_5: " << endl; cin >> m_stS_stR_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_stS_strN_str(); //用来接收字符串的临时变量 const char* pName = m_stS_strN_str(); const char* pAppearance = m_stS_strA_str(); cout << "学生学号: " << pNumber << '/t' << "姓名: " << pName << '/t' << "性别: " << m_stS_chSex; cout << "出生年月: " << m_stS_stD_nYear << ',' << m_stS_stD_nMonth << ',' << m_stS_stD_nDay; cout << "政治面貌: " << pAppearance << "五门课成绩: " << endl; cout << "m_dSubject_1: "<< m_stS_stR_dSubject_1<< endl; cout << "m_dSubject_2: "<< m_stS_stR_dSubject_2<< endl; cout << "m_dSubject_3: "<< m_stS_stR_dSubject_3<< endl; cout << "m_dSubject_4: "<< m_stS_stR_dSubject_4<< endl; cout << "m_dSubject_5: "<< m_stS_stR_dSubject_5<< endl;}CNode* CNode::GetNodeNext(){ return m_Next;}#include "CLinkLh"#include "CNh"void 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; //指针置空}你的要求太多 , 没仔细看, 我把我给别人写的赋值给你吧 , 我已经写的很全了,程序有问题可以给我留言

数据结构课程设计论文范文

163 评论(15)

lyzhee

已经发到你邮箱了。记得给分。
333 评论(14)

相关问答