當前位置:首頁 » 課程大全 » 計算器數據結構課程設計報告

計算器數據結構課程設計報告

發布時間: 2021-01-31 21:20:14

❶ 數據結構的課程設計報告要怎麼寫啊

暈/////真麻煩。。。。。

數據結構實習報告規范

實習報告的開頭應給出題目、班級、姓名、學號和完成日期,並包括以下七個內容:

1、需求分析

以無歧義的陳述說明程序設計的任務,強調的是程序要做什麼?明確規定:

(1)輸入的形式和輸入值的范圍;

(2)輸出的形式;

(3)程序所能達到的功能;

(4)測試數據:包括正確地輸入及其輸出結果和含有錯誤的輸入及其輸出結果。

2、概要設計

說明本程序中用到的所有抽象數據類型的定義、主程序的流程以及各程序模塊之間的層次(調用)關系。

3、詳細設計

實現概要設計中定義的所有數據類型,對每個操作只需要寫出偽碼演算法;對主程序和其他模塊也都需要寫出偽碼演算法(偽碼演算法達到的詳細程度建議為:按照偽碼演算法可以在計算機鍵盤直接輸入高級程序設計語言程序);畫出函數的調用關系圖。

4、調試分析

內容包括:

(1)調試過程中遇到的問題是如何解決的以及對設計與實現的回顧討論和分析;

(2)演算法的時空分析(包括基本操作和其他演算法的時間復雜度和空間復雜度的分析)和改進思想;

(3)經驗和體會等。

5、用戶使用說明

說明如何使用你編寫的程序,詳細列出每一步操作步驟。

6、測試結果

列出你的測試結果,包括輸入和輸出。這里的測試數據應該完整和嚴格,最好多於需求分析中所列。

7、附錄

題 目 : [數據結構] 約瑟夫-實習報告
尺 寸 : 約瑟夫-實習報告.doc
目 錄 : 一、需求分析
二、概要設計
三、程序具體設計及函數調用關系
四、調試分析
五、測試結果

原 文 : 實習報告

題目:約瑟夫(Joseph)問題的一種描述是:編號為1,2,......,n的n個人按順時針方向圍坐一圈,每人持有一個密碼(正整數)。一開始任選一個整數作為報數上限值m,從第一個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下一個開始重新從1報數,如此下去,直至年有人全部出列為止。試設計一個程序求出出列順序。
班級: 姓名: 學號: 完成日期:

一、需求分析
1. 本演示程序中,利用單向循環鏈表存儲結構存儲約瑟夫環數據(即n個人的編號和密碼)。
2. 演示程序以用戶和計算機的對話方式執行,即在計算機終端上顯示"提示信息"之後,由用戶在鍵盤上輸入演示程序中需要輸入的數據,運算結果顯示在其後。
3. 程序執行的命令包括:
1)構造單向循環鏈表;2)
4. 測試數據
m 的初值為20;n=7,7個人的密碼依次為:3,1,7,2,4,8,4,首先m值為6(正確的出列順序為6,1,4,7,2,1,3,5)。

二、概要設計
1.單向循環鏈表的抽象數據類型定義為:
ADT List{
數據對象:D={ai | ai∈正整數,I=1,2,......,n,n≥0}
數據關系:R1={< ai-1,ai > |,ai-1,ai∈D,I=1,2,......,n}
基本操作:
Init List(&L)
操作結果:構造一個空的線性表L。
List Insert(&L,i,e)
初始條件:線性表L已存在,1≤i≤List Length(L)+1.
操作結果:在L中第i個位置之前插入新的數據無素e,L長度加1。
List Delete(&L,i,&e)
初始條件:線性表L存在非空,1≤i≤List Length(L).
操作結果:刪除L的第i個元素,並用e返回其值,L長度減1。
2. 程序包含四個模塊:
1)主程序模塊:

❷ 數據結構課程設計~ 求報告+代碼~

分吧。

❸ 求數據結構課程設計 算數表達式報告及C語言源代碼

ok 目標已完成

❹ 數據結構課程設計分析報告

這個我也提問過 就是沒人給回復。。。祝樓主好運吧

❺ 求一份數據結構課程設計報告

//class CNode.h
#ifndef __CNODE_H__
#define __CNODE_H__

#include <iostream>
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.h"

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 "CLinkList.h"
#include "CNode.h"

CLinkList::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.h"

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_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 << '\t' << "姓名: " << pName << '\t' << "性別: " << 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.h"

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; //指針置空

}

你的要求太多 , 沒仔細看, 我把我給別人寫的賦值給你吧 , 我已經寫的很全了,程序有問題可以給我留言

❻ 數據結構課程設計報告(一元多項式的計算)

#include "stdafx.h"
#include "iostream"
using namespace std;
#define MAXSIZE 10
typedef struct
{
int xi;
int ;
}DataType;
typedef struct node
{
DataType data[MAXSIZE];
int length;
}Dx,*PDx;
PDx Init_List()
{
Dx *S;
S=(Dx *)malloc(sizeof(Dx));
if(S)
S->length=0;
return S;
}
int Empty(Dx *S)
{
if(S->length==0)
return 1;
else return 0;
}
int In_list(Dx *S,DataType a)//建立多項式存儲結構
{
if(S&&S->length<MAXSIZE)
{
S->length++;
S->data[S->length-1]=a;
return 1;
}
else return 0;
}
int Insert_list(Dx *S,int j,DataType e)//插入
{
if(S&&S->length<MAXSIZE)
{
S->length++;
for(int i=S->length-1;i>j;i--)
S->data[i]=S->data[i-1];
S->data[j]=e;
return 1;
}
else return 0;
}
int Delete_list(Dx *S,int m)//m就是數組下標
{
if(!S)
{
cout<<"多項式不存在!"<<endl;
return -1;
}
if(m<1||m>S->length)
{
cout<<"刪除位置不合法!"<<endl;
return 0;
}
for(int j=m;j<S->length;j++)
S->data[j-1]=S->data[j];
S->length--;
return 1;
}
PDx Luru(int n)//錄入多項式,並存儲起來,n為多項式的項數!
{
Dx *S;
S=Init_List();
DataType e;
cout<<"按從高指數到低指數,輸入一元多項式的系數和指數;"<<endl;
for(int i=0;i<n;i++)
{
cout<<"指數:";
cin>>e.;
if((S->length-1>=0&&e.>=S->data[S->length-1].)||e.<0)
{
i--;
cout<<"輸入指數大於前一項錯誤請重輸或小於0!"<<endl;
continue;
}
cout<<"系數:";
cin>>e.xi;
In_list(S,e);
}
return S;
}
void print(Dx *S)
{
for(int i=0;i<S->length;i++)
{
if(i>0&&S->data[i].xi>=0)
cout<<"+";
cout<<S->data[i].xi<<"X^"<<S->data[i].;
}
cout<<endl;
}
PDx Add(Dx *S1,Dx *S2)
{
Dx *S3;
S3=Init_List();
for(int x=0;x<S1->length;x++)
{
S3->length++;
S3->data[S3->length-1]=S1->data[x];
}
for(int i=0;i<S2->length;i++)
{ for(int j=0;j<S3->length;j++)
{
if(S2->data[i].==S3->data[j].)
{
S3->data[j].xi+=S2->data[i].xi;
break;
}
else if(S2->data[i].>S3->data[j].)
{
Insert_list(S3,j,S2->data[i]);
break;
}
}
if(S2->data[i].<S3->data[S3->length-1].)
{
In_list(S3,S2->data[i]);
}
}
return S3;
}
PDx Sub(Dx *S1,Dx *S2)//S1-S2
{
Dx *S3;
S3=Init_List();
DataType e;
for(int x=0;x<S1->length;x++)
{
S3->length++;
S3->data[S3->length-1]=S1->data[x];
}
for(int i=0;i<S2->length;i++)
{ for(int j=0;j<S3->length;j++)
{
if(S2->data[i].==S3->data[j].)
{
S3->data[j].xi-=S2->data[i].xi;
if(S3->data[j].xi==0)
Delete_list(S3,j+1);
break;
}
else if(S2->data[i].>S3->data[j].)
{
e=S2->data[i];
e.xi=-1*e.xi;
Insert_list(S3,j,e);
break;
}
}
if(S2->data[i].<S3->data[S3->length-1].)
{
e=S2->data[i];
e.xi=-1*e.xi;
In_list(S3,e);
}
}
return S3;
}
PDx Bin(Dx *S1,Dx *S2)
{
Dx *S3;
S3=Init_List();
DataType e,a;
a.xi=0;
a.=0;
In_list(S3,a);
for(int i=0;i<S1->length;i++)
for(int j=0;j<S2->length;j++)
{
e.xi=S1->data[i].xi*S2->data[j].xi;
e.=S1->data[i].*S2->data[j].;
for(int k=0;k<S3->length;k++)
{
if(e.==S3->data[k].)
{
S3->data[k].xi+=S2->data[j].xi;
break;
}
else if(e.>S3->data[k].)
{
Insert_list(S3,k,e);
break;
}
if(S3->length-2>=0&&e.<S3->data[S3->length-2].)
{
Insert_list(S3,S3->length-1,e);
}
}
}
return S3;
}

int _tmain(int argc, _TCHAR* argv[])
{
Dx *S1,*S2,*S3,*S4,*S5;
int i,j;
cout<<"要錄入的1多項式項數:";
cin>>i;
S1=Luru(i);
cout<<"要錄入的2多項式項數:";
cin>>j;
S2=Luru(j);
S3=Add(S1,S2);
S4=Sub(S1,S2);
S5=Bin(S1,S2);
cout<<"第一個多項式:"<<endl;
print(S1);
cout<<"第二個多項式:"<<endl;
print(S2);
cout<<"兩多項式的和:"<<endl;
print(S3);
cout<<"兩多項式的差"<<endl;
print(S4);
cout<<"兩多項式的積"<<endl;
print(S5);
return 0;
}

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919