当前位置:文档之家› 数据结构课程设计步骤

数据结构课程设计步骤

数据结构课程设计C++版实现步骤:Step1 用VS新建一个基于Console Application 的DOS工程Step2 用以下代码替换main函数所在文件中的所有代码#include"stdafx.h"#include<iostream>usingnamespace std;#include"MenuBase.h"#include"LinkList.h"CMenuBase*pBase;LinkList*pList;void main(){pBase=new CMainMenu;int EventID=0;char CammandLine[255]={0};while(pBase){pBase->ShowMenu();cin>>CammandLine;if(strlen(CammandLine)==0){cout<<"非¤?法¤¡§操¨´作Á¡Â,ê?非¤?正y常¡ê退ª?出?\n";break;}EventID=atoi(CammandLine);pBase->Event(EventID);}if(pList)delete pList;}void InvalidateAction(){cout<<"非¤?法¤¡§输º?入¨?\n";}Step3 新建一个头文件def.h,其代码为#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedefint Status;#define NULL 0Step4 新建一个头文件resource.h,其代码为//#define ID_LIST 1#define ID_STACK_QUEUE 2#define ID_STR_ARR_GL 3#define ID_TREE 4#define ID_GRAPH 5#define ID_SEARCH 6#define ID_SORT 7#define ID_EXIT 8#define ID_CREATE_LIST 1#define ID_LIST_INSERT 2#define ID_LIST_FIND 3#define ID_LIST_DELET 4#define ID_LIST_SHOW 5#define ID_LIST_RETURN 6//#define SUBMENU(submenu) pBase=new submenu(pBase);#define EXIT_SUBMENU tmp=m_pParent;\delete pBase;\pBase=tmp;void InvalidateAction();Step5 新建一个头文件MenuBase.h,其代码为#pragmaonceclass CMenuBase{public:CMenuBase(void);~CMenuBase(void);virtualvoid ShowMenu()=0;virtualvoid Event(int EvenID)=0;protected:CMenuBase* m_pParent;};class CMainMenu:public CMenuBase{public:CMainMenu(void){};~CMainMenu(void){};virtualvoid ShowMenu();virtualvoid Event(int EvenID);};class CListMenu:public CMenuBase{public:CListMenu(CMenuBase*);~CListMenu(void);virtualvoid ShowMenu();virtualvoid Event(int EvenID);protected:void OnCreateList();void OnListInsert();void OnListShow();};Step6 新建一个源文件MenuBase.cpp,其代码为#include"StdAfx.h"#include"MenuBase.h"#include"resource.h"#include<iostream>usingnamespace std;extern CMenuBase*pBase;CMenuBase::CMenuBase(void):m_pParent(NULL){}CMenuBase::~CMenuBase(void){}//CMainMenuvoid CMainMenu::ShowMenu(){cout<<"\n **************《数据结构课程设计》*****************\n";cout<<" * 1 线性表2 栈与队列 3 串、数组和义表 *\n";cout<<" * 4 树 5 图 6 查找 *\n";cout<<" * 7 排序 8 退出 *\n";cout<<" ***************************************************\n"; }void CMainMenu::Event(int EvenID){CMenuBase*tmp;switch(EvenID){case ID_LIST:SUBMENU(CListMenu)break;case ID_STACK_QUEUE:break;//…-…-…-…-…-…-…-case ID_EXIT:delete pBase;pBase =0;break;default:InvalidateAction();break;}}//CMainMenu END//CListMenu#include"LinkList.h"extern LinkList*pList;CListMenu::CListMenu(CMenuBase*parent){m_pParent=parent;}void CListMenu::ShowMenu(){cout<<" ************《线性表》*************\n";cout<<" * 1 创建线性表 2 插入元素 *\n";cout<<" * 3 查找元素 4 删除元素 *\n";cout<<" * 5 浏览 6 退出 *\n";cout<<" ***********************************\n"; }void CListMenu::Event(int EvenID){CMenuBase*tmp;switch(EvenID){case ID_CREATE_LIST:OnCreateList();break;case ID_LIST_INSERT:OnListInsert();break;//…-…-…-case ID_LIST_SHOW:OnListShow();break;case ID_LIST_RETURN:EXIT_SUBMENUbreak;default:InvalidateAction();break;}}void CListMenu::OnCreateList(){if(pList){cout<<"链表已创建\n";return;}pList=new LinkList;cout<<"链表创建成功\n";}void CListMenu::OnListInsert(){if(!pList) {cout<<"必须先创建链表才能插入元素\n";return;}cout<<"输入要插入的整数";int a;cin>>a;if(pList->Insert(1,a)==OK)cout<<"插入成功\n";elsecout<<"插入失败\n";}void CListMenu::OnListShow(){if(!pList) {cout<<"没有创建表\n";return;}pList->Print();}//CListMenu ENDStep7 新建头文件LinkList.h,其代码为#pragmaonce#include"def.h"class LinkList{typedefint ElemType ;struct LNode{ElemType data;struct LNode*next;LNode():next(0){}}*head;public:LinkList();LinkList(const LinkList&obj);~LinkList();LinkList&operator=(const LinkList&obj);Status GetElem(int i,ElemType&e);Status Insert(int i,ElemType e);Status Delete(int i,ElemType&e);LinkListMergeList(LinkList&Lb);void Print();};Step8 新建源文件LinkList.h,其代码为#include"StdAfx.h"#include"LinkList.h"#include<iostream>usingnamespace std;LinkList::LinkList(){ head=new LNode;} LinkList::LinkList(const LinkList&obj){head=new LNode;LNode*p=head;LNode*q=obj.head->next;while(q) {p->next=new LNode;p=p->next;p->data=q->data;q=q->next;}}LinkList::~LinkList(){LNode*p=head;while(p) {LNode*q=p->next;delete p;p=q;}head=0;}LinkList&LinkList::operator=(const LinkList&obj){ head=new LNode;LNode*p=head;LNode*q=obj.head->next;while(q) {p->next=new LNode;p=p->next;p->data=q->data;q=q->next;}return *this;}Status LinkList::GetElem(int i,ElemType&e){ LNode* p=head->next;int j=1;while(p && j<i)p=p->next,++j;if(!p || j>i)return ERROR;e=p->data;return OK;}Status LinkList::Insert(int i,ElemType e){ LNode* p=head;int j=0;while(p && j<i-1)p=p->next,++j;if(!p || j>i-1)return ERROR;LNode* s=new LNode;s->data=e; s->next=p->next; p->next=s;return OK;}Status LinkList::Delete(int i,ElemType&e){ LNode* p=head;int j=0;while(p && j<i-1)p=p->next,++j;if(!p || j>i-1)return ERROR;LNode* q=p->next;p->next=q->next; e=q->data; free(q);return OK;}LinkListLinkList::MergeList(LinkList&Lb){ LinkListLc;LNode* pa=head->next,*pb=Lb.head->next;LNode* pc=Lc.head=head;while(pa &&pb) {if(pa->data<=pb->data) {pc->next=pa; pc=pa;pa=pa->next;}else{pc->next=pb;pc=pb;pb=pb->next;}}pc->next=pa?pa:pb;free(Lb.head);Lb.head=new LNode;head=new LNode;return Lc;}void LinkList::Print(){LNode *p=head->next;while(p) {cout<<p->data<<" ";p=p->next;}cout<<endl;}Step9运行,然后并扩充功能。

相关主题