www.激情五月.com,国产成人网,日本美女老师,久久伊人草,国产欧美一区二区精品久久久,2020国产成人精品视频网站

歡迎訪問愛寫作文學(xué)網(wǎng)!

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計哈夫曼編碼 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計停車場管理系統(tǒng)

故事會 分享 時間: 加入收藏 我要投稿 點贊

在日常的學(xué)習(xí)、工作、生活中,肯定對各類范文都很熟悉吧。范文書寫有哪些要求呢?我們怎樣才能寫好一篇范文呢?以下是小編為大家收集的優(yōu)秀范文,歡迎大家分享閱讀。

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計哈夫曼編碼 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計停車場管理系統(tǒng)篇一

1.赫夫曼編碼器

設(shè)計一個利用赫夫曼算法的編碼和譯碼系統(tǒng),重復(fù)地顯示并處理以下項目,直到選擇退出為止。要求:

1)將權(quán)值數(shù)據(jù)存放在數(shù)據(jù)文件(文件名為,位于執(zhí)行程序的當(dāng)前目錄中)

2)初始化:鍵盤輸入字符集大小26、26個字符和26個權(quán)值(統(tǒng)計一篇英文文章中26個字母),建立哈夫曼樹;

3)編碼:利用建好的哈夫曼樹生成哈夫曼編碼;

4)輸出編碼(首先實現(xiàn)屏幕輸出,然后實現(xiàn)文件輸出); 5)界面優(yōu)化設(shè)計。

代碼如下:

#include

#include

#include

#include

#define n 200

typedef struct htnode

//結(jié)構(gòu)體 { int weight;

char ch;int parent,lchild,rchild;}htnode;typedef char * * hcode;

void save(int n,htnode *ht)

//把權(quán)值保存到文件 {

file * fp;

int i;

if((fp=fopen(“”,“wb”))==null)

{

printf(“cannot open filen”);

return;

}

for(i=0;i

if(fwrite(&ht[i].weight,sizeof(struct htnode),1,fp)!=1)

printf(“file write errorn”);

fclose(fp);

system(“cls”);

printf(“保存成功!”);

}

void create_h(int n,int m,htnode *ht)

//建立赫夫曼樹,進(jìn)行編碼 {

int w,k,j;char c;for(k=1;k<=m;k++){

if(k<=n)

{

printf(“n請輸入權(quán)值和字符(用空格隔開): ”);

scanf(“%d”,&w);

scanf(“ %c”,&c);ht[k].ch=c;

ht[k].weight=w;

}

else ht[k].weight=0;

ht[k].parent=ht[k].lchild=ht[k].rchild=0;}

int p1,p2,w1,w2;

for(k=n+1;k<=m;k++){

p1=0;p2=0;

w1=32767;w2=32767;

for(j=1;j<=k-1;j++)

{

if(ht[j].parent==0)

{

if(ht[j].weight

{

w2=w1;p2=p1;

w1=ht[j].weight;

p1=j;

}

else if(ht[j].weight

{

w2=ht[j].weight;

p2=j;

}

}

} ht[k].lchild=p1;ht[k].rchild=p2;ht[k].weight=ht[p1].weight+ht[p2].weight;

ht[p1].parent=k;ht[p2].parent=k;

} printf(“輸入成功!”);}

void coding_h(int n,htnode *ht)

//對結(jié)點進(jìn)行譯碼 { int k,sp,fp,p;char *cd;hcode hc;

hc=(hcode)malloc((n+1)*sizeof(char *));

cd=(char *)malloc(n*sizeof(char));cd[n-1]='';

printf(“************************n”);printf(“char codingn”);

for(k=1;k<=n;k++)

{

sp=n-1;p=k;fp=ht[k].parent;

for(;fp!=0;p=fp,fp=ht[fp].parent)

if(ht[fp].lchild==p)

cd[--sp]='0';

else

cd[--sp]='1';

hc[k]=(char *)malloc((n-sp)*sizeof(char));

strcpy(hc[k],&cd[sp]);

printf(“%c

%sn”,ht[k].ch,hc[k]);

}

printf(“************************n”);free(cd);} void read(int n,htnode *ht)

//從文件中讀出數(shù)據(jù) {

int i;file * fp;if((fp=fopen(“”,“rb”))==null){

printf(“cannot open filen”);

exit(0);} for(i=0;i

fread(&ht[i].weight,sizeof(struct htnode),1,fp);// printf(“%d n”,ht[i].weight);

} coding_h(n,ht);

fclose(fp);}

void print_h(int m,htnode *ht)

//輸出赫夫曼造樹過程 { int k;printf(“************************n”);printf(“num weight

par lch rch n”);for(k=1;k<=m;k++){

printf(“%d ”,k);

printf(“

%d”,ht[k].weight);

printf(“

%d”,ht[k].parent);

printf(“

%d”,ht[k].lchild);

printf(“

%dn”,ht[k].rchild);

} printf(“************************n”);}

void decode(int m,htnode *ht)

//對輸入的電文進(jìn)行譯碼 { int i,j=0;char a[10];char endflag='2';i=m;printf(“輸入發(fā)送的編碼,以‘2’結(jié)束:”);scanf(“%s”,&a);printf(“譯碼后的字符:”);while(a[j]!='2'){

if(a[j]=='0')

i=ht[i].lchild;

else i=ht[i].rchild;

if(ht[i].lchild==0)

//ht[i]是葉結(jié)點

{

printf(“%c”,ht[i].ch);

i=m;

//回到根結(jié)點

}

j++;} printf(“n”);if(ht[i].lchild!=0&&a[j]!='2')

printf(“error”);}

int main()

//主函數(shù) { int n,m,c;htnode ht[n];do {

system(“color 2f”);

//(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);

printf(“nttt 赫夫曼編譯碼系統(tǒng) ttt”);

printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);

printf(“nttt1.輸入權(quán)值、字母nttt2.把數(shù)據(jù)寫入文件nttt3.輸出赫夫曼編碼表nttt”);

printf(“6.從文件中讀出數(shù)據(jù)nttt7.退出”);

printf(“nnttt請選擇:”);

scanf(“%d”,&c);

switch(c)

{

case 1:system(“cls”);printf(“輸入多少結(jié)點:”);

scanf(“%d”,&n);m=2*n-1;create_h(n,m,ht);break;

case 2:system(“cls”);save(n,ht);break;

case 3:system(“cls”);print_h(m,ht);break;

case 4:system(“cls”);coding_h(n,ht);break;

case 5:system(“cls”);decode(m,ht);break;

case 6:system(“cls”);read(n,ht);break;

case 7:system(“cls”);exit(0);

}

}while(1);return 0;}

運(yùn)行界面如下:

2.學(xué)生成績管理(鏈表實現(xiàn))要求:

實現(xiàn)如下功能:增加、查找、刪除、輸出、退出。

代碼如下:

#include

#include

#include

typedef struct score

//定義成績信息結(jié)構(gòu)體 {

char number[20];char name[20];char chinese[20];char english[20];char math[20];}score;typedef struct node_score

//定義成績信息鏈表結(jié)點,包括數(shù)據(jù)域和指針域 {

score data;struct node_score *next;}node_score,*p_node_score;p_node_score headscore;//定義鏈表的頭指針為全局變量 void printscore(score s)//輸出信息函數(shù) { printf(“ %10s”,);printf(“ |

%-6s”,);printf(“

|

%-3s”,e);printf(“

|

%-3s”,h);

printf(“ |

%-3sn”,);} void view()//輸出函數(shù) {

p_node_score pnodescore;

pnodescore=headscore;printf(“

學(xué)號

|

姓名

| 語文成績

| 英語成績| 高數(shù)成績n”);while(pnodescore!= null){

printscore(pnodescore->data);//輸出學(xué)生信息和成績信息

pnodescore=pnodescore->next;} } void add(){

p_node_score pnodescore;// 定義一個節(jié)點

pnodescore=(p_node_score)malloc(sizeof(node_score));//為節(jié)點分配存儲空間

printf(“請輸入學(xué)號:”);scanf(“%s”,pnodescore->);printf(“請輸入姓名:”);scanf(“%s”,pnodescore->);printf(“請輸入語文成績:”);scanf(“%s”,pnodescore->e);printf(“請輸入英語成績:”);scanf(“%s”,pnodescore->h);printf(“請輸入高數(shù)成績:”);scanf(“%s”,pnodescore->);if(headscore==null){ //如果頭結(jié)點為空

headscore=pnodescore;

pnodescore->next=null;} else

{ //如果頭結(jié)點不為空

pnodescore->next=headscore;

headscore=pnodescore;//將頭結(jié)點新結(jié)點

} } void input(){ int n,i;printf(“輸入幾個學(xué)生的數(shù)據(jù):”);scanf(“%d”,&n);for(i=0;i

add();printf(“輸入成功!”);} int delete(){ p_node_score pnodescore,p1;//p1為pnodescore的前驅(qū)

p1=headscore;if(p1==null){

printf(“成績表中沒有數(shù)據(jù)!請先添加數(shù)據(jù)!n”);

return 0;} char deletenumber[20];

printf(“請數(shù)入要刪除的學(xué)生學(xué)號:”);scanf(“%s”,deletenumber);if(strcmp(p1->,deletenumber)==0)

{ //如果要刪除的結(jié)點在第一個

headscore=p1->next;

pnodescore=p1;

printf(“學(xué)號為%s的學(xué)生信息已經(jīng)刪除!n”,deletenumber);

return 0;} else

{

pnodescore=p1->next;

while(pnodescore!=null)

{

if(strcmp(pnodescore->,deletenumber)==0)

{

p1->next=pnodescore->next;

printf(“學(xué)號為%s的學(xué)生信息已經(jīng)刪除!n”,deletenumber);

return 0;

}

else

{ //否則,結(jié)點向下一個,p1仍為pnodescore的前驅(qū)

p1=pnodescore;

pnodescore=pnodescore->next;

}

} } printf(“沒有此學(xué)號的學(xué)生!”);} int change(){

p_node_score pnodescore;

pnodescore=headscore;if(pnodescore==null){

printf(“成績表中沒有數(shù)據(jù)!請先添加數(shù)據(jù)!n”);

return 0;} char editnumber[20];printf(“請輸入你要修改的學(xué)生學(xué)號:”);scanf(“%s”,editnumber);while(pnodescore!=null){

if(strcmp(pnodescore->,editnumber)==0)

{ //用strcmp比較兩字符串是否相等,相等則返回0

printf(“原來的學(xué)生成績信息如下:n”);//輸出原來的成績信息

printf(“

學(xué)號

|

姓名

| 語文成績

| 英語成績| 高數(shù)成績n”);

printscore(pnodescore->data);

printf(“語文新成績:”);

scanf(“%s”,pnodescore->e);

printf(“英語新成績:”);

scanf(“%s”,pnodescore->h);

printf(“高數(shù)新成績:”);

scanf(“%s”,pnodescore->);

printf(“成績已經(jīng)修改!”);

return 0;

}

pnodescore=pnodescore->next;//如果不相等,pnodescore則指向下一個結(jié)點

} printf(“沒有此學(xué)號的學(xué)生!n”);//如果找到最后都沒有,則輸出沒有此學(xué)號的學(xué)生

} int find(){

p_node_score pnodescore;

pnodescore=headscore;if(pnodescore==null){

printf(“成績表中沒有數(shù)據(jù)!請先添加數(shù)據(jù)!n”);

return 0;} char findnumber[20];printf(“請輸入你要查找的學(xué)生學(xué)號:”);scanf(“%s”,findnumber);while(pnodescore!=null){

if(strcmp(pnodescore->,findnumber)==0)

{

printf(“你要查找的學(xué)生成績信息如下:n”);

printf(“

學(xué)號

|

姓名

| 語文成績

| 英語成績| 高數(shù)成績n”);

printscore(pnodescore->data);

return 0;

}

pnodescore=pnodescore->next;} printf(“沒有此學(xué)號的學(xué)生!n”);} int main()

//主函數(shù) { int choice=0;headscore=null;int c;do {

system(“color 2f”);

//(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);

printf(“nttt 學(xué)生成績管理系統(tǒng) ttt”);

printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);

printf(“nttt1.輸入成績信息nttt2.輸出成績信息nttt3.添加成績信息nttt”);

printf(“4.修改成績信息nttt5.刪除成績信息nttt6.查詢成績信息nttt7.退出”);

printf(“nnttt請選擇:”);

scanf(“%d”,&c);

switch(c)

{

case 1:system(“cls”);input();break;

case 2:system(“cls”);view();break;

case 3:system(“cls”);add();break;

case 4:system(“cls”);change();break;

case 5:system(“cls”);delete();break;

case 6:system(“cls”);find();break;

case 7:system(“cls”);exit(0);

}

}while(1);return 0;}

運(yùn)行界面如下:

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計哈夫曼編碼 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計停車場管理系統(tǒng)篇二

課 程 設(shè) 計 任 務(wù) 書

信息 學(xué)院 信息管理與信息系統(tǒng) 專業(yè) 09級1班 班 孫鵬一、二、課程設(shè)計題目: 迷宮求解、一元多項式

課程設(shè)計主要參考資料: 數(shù)據(jù)結(jié)構(gòu)(c語言版)嚴(yán)蔚敏、吳偉民 編著

數(shù)據(jù)結(jié)構(gòu)題集(c語言版)嚴(yán)蔚敏、吳偉民、米寧 編著

數(shù)據(jù)結(jié)構(gòu)課件

三、設(shè)計應(yīng)解決下列各主要問題:

1.實現(xiàn)迷宮的路徑求解,并輸出最終路徑,標(biāo)記走過卻未選擇的路徑和最終選擇的路徑

2.對一元多項式實現(xiàn)加法,減法,乘法,求導(dǎo)的計算,并按指數(shù)由大到小排序輸出

四、課程設(shè)計相關(guān)附件(如:圖紙、軟件等):

五、命題發(fā)出日期:2011-3-15 設(shè)計應(yīng)完成日期: 2010-6-20

設(shè)計指導(dǎo)教師(簽章):

系主任(簽章):

指導(dǎo)教師對課程設(shè)計的評語

指導(dǎo)教師(簽章):

年 月 日

山東科技大學(xué)學(xué)生課程設(shè)計

課程設(shè)計1 迷宮問題

一、需求分析:

1.2.3.4.以二維數(shù)組maze[][]表示迷宮

用戶輸入迷宮的數(shù)據(jù):構(gòu)建迷宮,行數(shù)m,列數(shù)n 迷宮的入口位置和出口位置可由用戶隨時設(shè)定

若設(shè)定的迷宮存在通路,則以長方陣形式將迷宮及其通路輸出到標(biāo)準(zhǔn)輸出文件(即終端)上,其中,字符“#”表示障礙,字符“*”表示路徑上的位置,字符“@”表示“死胡同”,即曾經(jīng)途徑然而不能到達(dá)出口的位置,余者用空格符印出。若設(shè)定的迷宮不存在通路,則報告相應(yīng)信息。

5.本程序只求出一條成功的通路。然而,只需要對迷宮求解的函數(shù)做小量修改,便可求得全部路徑。

二、概要設(shè)計:

抽象數(shù)據(jù)類型線性表的定義如下: ⒈ 設(shè)計棧的抽象數(shù)據(jù)類型定義:

adt stack { 數(shù)據(jù)對象:d={ai:|ai∈positionset,i=1?n,n≥0} 數(shù)據(jù)關(guān)系:r1={|ai-1,ai∈d,i=2,?n} 基本操作:的初始化s gettop(s,&e)素

push(&s,e)pop(&s,e)

返回其值 }adt stack;

⒉ 迷宮的抽象數(shù)據(jù)類型定義: adt maze{ 數(shù)據(jù)對象:d:={aij,start,end|aij,start,end∈{} 0≤i≤m+2,0≤j≤n+2,m,n≥0}

數(shù)據(jù)關(guān)系:r={} row={|ai-1,aij∈d i=1,?,m+2,j=1,?,n+2}

第1頁

操作結(jié)果

構(gòu)造一個空棧,完成棧用e返回棧s的棧頂元將新的元素e壓入棧頂 刪除棧頂元素,并用einitstack(&s)

山東科技大學(xué)學(xué)生課程設(shè)計

col={|aijaij-1∈d}

基本操作: masepath(int i,int j,int m,int n,sqstack &s)初始條件:已知目前迷宮狀態(tài), 傳過起始位置,和終止位置 操作結(jié)果:搜索迷宮,用sqstack s返回搜索所得路徑。如不存在,返回2 }adt maze

三、詳細(xì)設(shè)計:

#include

#include

#include

#define overflow-2 #define ok 1 #define error 0 #define true 1 #define false 0 #define stack_init_size 100 //存儲空間初始量 #define stack_increment 10//存儲空間初始增量

typedef int status;

typedef struct { int r;int c;}posttype;//坐標(biāo)位置

迷宮的r行c列 typedef struct { int ord;//通道塊在路徑上的序號

posttype seat;//通道塊的當(dāng)前坐標(biāo)位置

int di;//通道塊指向下一通道塊的方向 }selemtype;//棧元素的類型 typedef struct { selemtype *base;//棧底指針

selemtype *top;//棧頂指針

int stacksize;//棧的最大容量 }stack;//棧的類型

第2頁 山東科技大學(xué)學(xué)生課程設(shè)計

status initstack(stack &s)//初始化棧 { =(selemtype *)malloc(stack_init_size*sizeof(selemtype));if(!)

exit(overflow);//存儲分配失敗;=;ize=stack_init_size;return ok;}//initstack

status stackempty(stack s)//判斷棧是否為空,如果為空返回true,否則返回false { if(==)

return true;

return false;}//stackempty

status push(stack &s,selemtype e)//插入元素為e的棧頂元素 { if(->=ize){

=(selemtype*)realloc(,(ize+stack_increment)*sizeof(selemtype));

if(!)

exit(overflow);

=+ize;

ize+=stack_increment;} *++=e;return ok;}//push

status pop(stack &s,selemtype &e)//刪除棧頂元素存入e { if(==)

return error;e=*--;

第3頁 山東科技大學(xué)學(xué)生課程設(shè)計

return ok;}//pop

status destroystack(stack &s)//銷毀棧 { free();=;return ok;}//destroystack

// #define maxlen 20//迷宮包括外墻最大行列數(shù)目 typedef struct{

int r;

int c;

char adr[maxlen][maxlen];//可取' ''*' '@' '#' }mazetype;

//迷宮類型

status initmaze(mazetype &maze){ //初始化迷宮若成功返回true,否則返回false

int m,n,i,j,k=1;

printf(“輸入迷口的行數(shù)和列數(shù): ”);

scanf(“%d%d”,&maze.r,&maze.c);//迷宮行和列數(shù)

for(i=0;i<=maze.c+1;i++){//迷宮行外墻

[0][i]='#';

[maze.r+1][i]='#';

}//for

for(i=0;i<=maze.r+1;i++){//迷宮列外墻

[i][0]='#';

[i][maze.c+1]='#';

}

for(i=1;i<=maze.r;i++)

for(j=1;j<=maze.c;j++)

[i][j]=' ';//初始化迷宮

printf(“輸入障礙物%d的坐標(biāo)(以坐標(biāo)(0,0)結(jié)束輸入): ”,k);

scanf(“%d%d”,&m,&n);

k++;

while(m!=0)

{

if(m>maze.r || n>maze.c)//越界

第4頁 山東科技大學(xué)學(xué)生課程設(shè)計

exit(error);

[m][n]='#';//迷宮障礙用'#'標(biāo)記

printf(“輸入障礙物%d的坐標(biāo)(以坐標(biāo)(0,0)結(jié)束輸入): ”,k);

scanf(“%d%d”,&m,&n);

k++;

}

return ok;}//initmaze

status pass(mazetype maze,posttype curpos){ //當(dāng)前位置可通則返回ture,否則返回false

if([curpos.r][curpos.c]==' ')//可通

return true;

else

return false;}//pass

status footprint(mazetype &maze,posttype curpos){ //若走過并且可通返回true,否則返回false //在返回之前銷毀棧s

[curpos.r][curpos.c]='*';//“*”表示可通

return ok;}//footprint

posttype nextpos(posttype &curpos,int i){ //指示并返回下一位置的坐標(biāo)

posttype cpos;

cpos=curpos;

switch(i){

//1.2.3.4分別表示東,南,西,北方向

case 1 : cpos.c+=1;break;

case 2 : cpos.r+=1;break;

case 3 : cpos.c-=1;break;

case 4 : cpos.r-=1;break;

default: exit(error);

}

return cpos;}//nextpos

status markprint(mazetype &maze,posttype curpos){ //曾走過但不是通路標(biāo)記并返回ok

第5頁 山東科技大學(xué)學(xué)生課程設(shè)計

[curpos.r][curpos.c]='@';//“@”表示曾走過但不通

return ok;}//markprint

void printmaze(mazetype &maze)//將最后標(biāo)記好的迷宮輸出 { int i,j;printf(“n輸出迷宮的路徑:n”);for(i=0;i<=maze.c+1;i++)

printf(“%4d”,i);//輸出列數(shù)

printf(“n”);for(i=0;i<=maze.r+1;i++){

printf(“%d”,i);//輸出行數(shù)

for(j=0;j<=maze.c+1;j++)

printf(“%4c”,[i][j]);//輸出迷宮

printf(“n”);} }//printmaze

status mazepath(mazetype &maze,posttype start,posttype end)//若迷宮從入口start到end的通道則求得一條存放在棧中 { stack s;//初始化棧

posttype curpos;int curstep;selemtype e;initstack(s);curpos=start;curstep=1;do {

if(pass(maze,curpos))//當(dāng)前位置可通過而未曾走過留下足跡

{

footprint(maze,curpos);

=curstep;=curpos;=1;

push(s,e);//加入棧路徑中

if(curpos.r==end.r && curpos.c==end.c)//到達(dá)出口返回true

{

第6頁 山東科技大學(xué)學(xué)生課程設(shè)計

if(!destroystack(s))

exit(overflow);

else return true;

}

else

{

curpos=nextpos(curpos,1);//下一位置是當(dāng)前位置

curstep++;//探索下一步

}

}//if

else//當(dāng)前位置不能通過

{

if(!stackempty(s))

{

pop(s,e);//提取前一位置

while(==4 &&!stackempty(s))//4個方向都不能通過則留下記號@ 提取前一個位置進(jìn)行判斷是否是能通過

{

markprint(maze,);

pop(s,e);

}

if(<4)//換下一個方向探索

設(shè)定當(dāng)前位置為該新方向上的鄰位

{

++;

push(s,e);

curpos=nextpos(,);

}

}//if

} }while(!stackempty(s));if(!destroystack(s))

exit(error);else return false;}//mazepath

int main(){ mazetype maze;posttype start,end;char c;

第7頁 山東科技大學(xué)學(xué)生課程設(shè)計

do {

printf(“**********迷宮求解**********n”);

if(!initmaze(maze))

{

printf(“n 初始化迷宮失敗!!”);

exit(error);

}

do

{

printf(“n請輸入入口的坐標(biāo):”);

scanf(“%d%d”,&start.r,&start.c);//輸入入口坐標(biāo)

if(start.r>maze.r || start.c>maze.c)

printf(“n輸入錯誤,請重新輸入入口的坐標(biāo)!n”);

continue;

}

while(start.r>maze.r || start.c>maze.c);

do

{

printf(“n請輸入出口的坐標(biāo):”);//輸入出口的坐標(biāo)

scanf(“%d%d”,&end.r,&end.c);

if(end.r>maze.r || end.c>maze.c)

printf(“n輸入錯誤,請重新輸入出口坐標(biāo)!n”);

continue;

}

while(end.r>maze.r || end.c>maze.c);

if(!mazepath(maze,start,end))

printf(“n不能找到一條路徑!!n”);

else printmaze(maze);//輸出迷宮

printf(“是否要繼續(xù)?(y/n):”);

scanf(“%s”,&c);} while(c=='y' || c=='y');}。測試結(jié)果:

第8頁

四、山東科技大學(xué)學(xué)生課程設(shè)計

課程設(shè)計2 一元多項式

一、需求分析:

第9頁 山東科技大學(xué)學(xué)生課程設(shè)計

1.2.3.首先定義一個結(jié)構(gòu)體,其中定義一元多項式中的兩個參數(shù):系數(shù)和指數(shù)和鏈表中結(jié)點的指針域;

然后一一羅列每個在主程序中用到的函數(shù),并一一實現(xiàn); 最后在主程序中主要完成用戶的輸入和相關(guān)函數(shù)的調(diào)用。

二、概要設(shè)計:

void insert(ploylist *head,ploylist *input)

//查找位置插入新鏈節(jié)的函數(shù),且讓輸入的多項式呈降序排列 ploylist *creat(char ch)//輸入多項式

ploylist *add(ploylist *head,ploylist *pre)//多項式相加,head為第一個多項式建立的鏈表表頭,pre為第二個多項式建立的鏈表表頭

ploylist *sub(ploylist *head,ploylist *pre)//多項式相減

ploylist *mul(ploylist *head,ploylist *pre)//多項式相乘

ploylist *der(ploylist *head)//多項式求導(dǎo)

void print(ploylist *fun)//輸出多項式,fun指要輸出的多項式鏈表的表頭 void start()//用戶選擇界面

三、詳細(xì)設(shè)計:

#include

#include

typedef struct node

//定義節(jié)點類型 { float coef;

//多項式的系數(shù)

int expn;

//多項式的指數(shù)

struct node * next;//結(jié)點指針域 }ploylist;void insert(ploylist *head,ploylist *input)

//查找位置插入新鏈節(jié)的函數(shù),且讓輸入的多項式呈降序排列 {

ploylist *pre,*now;

int signal=0;

pre=head;

第10頁 山東科技大學(xué)學(xué)生課程設(shè)計

if(pre->next==null){pre->next=input;} //如果只有一個頭結(jié)點,則把新結(jié)點直接連在后面

else {

now=pre->next;//如果不是只有一個頭結(jié)點,則設(shè)置now指針

while(signal==0)

{

if(input->expn < now->expn)

{

if(now->next==null)

{

now->next=input;

signal=1;

}

else

{

pre=now;

now=pre->next;//始終讓新輸入的數(shù)的指數(shù)與最后一個結(jié)點中的數(shù)的指數(shù)比較,小于則插在其后面

}

}

else if(input->expn > now->expn)

{

input->next=now;

pre->next=input;

signal=1;

}//若新結(jié)點中指數(shù)比最后一個結(jié)點即now中的指數(shù)大,則插入now之前

else//若指數(shù)相等則需合并為一個結(jié)點,若相加后指數(shù)為0則釋放該結(jié)點

{

now->coef=now->coef+input->coef;

signal=1;

free(input);

if(now->coef==0)

{

pre->next=now->next;

free(now);

}

}//else } //while

第11頁 山東科技大學(xué)學(xué)生課程設(shè)計

}//else }//void

ploylist *creat(char ch)

//輸入多項式 {

ploylist *head,*input;

float x;

int y;

head=(ploylist *)malloc(sizeof(ploylist));

//創(chuàng)建鏈表頭

head->next=null;

scanf(“%f %d”,&x,&y);//實現(xiàn)用戶輸入的第一個項,包括其指數(shù)和系數(shù)

while(x!=0)

{

input=(ploylist *)malloc(sizeof(ploylist));//創(chuàng)建新鏈節(jié)

input->coef=x;

input->expn=y;

input->next=null;

insert(head,input);//每輸入一項就將其排序,是的鏈表中多項式呈降序排列

scanf(“%f %d”,&x,&y);

} return head;}

ploylist *add(ploylist *head,ploylist *pre)

//多項式相加,head為第一個多項式建立的鏈表表頭,pre為第二個多項式建立的鏈表表頭 {

ploylist *input;

int flag=0;

while(flag==0)

{

if(pre->next==null)

flag=1;//若該鏈表為空,則無需進(jìn)行加法運(yùn)算,跳出循環(huán)

else

{

pre=pre->next;

input=(ploylist *)malloc(sizeof(ploylist));

第12頁 山東科技大學(xué)學(xué)生課程設(shè)計

input->coef=pre->coef;

input->expn=pre->expn;

input->next=null;

insert(head,input);// 把g(x)插入到f(x)中,相當(dāng)于兩者相加,結(jié)果保存于f(x)

}

} return head;}

ploylist *sub(ploylist *head,ploylist *pre)//多項式相減 {

ploylist *input;

int flag=0;

while(flag==0)

{

if(pre->next==null)

flag=1;

else

{

pre=pre->next;

input=(ploylist *)malloc(sizeof(ploylist));

input->coef=0-pre->coef;//將第二個多項式里的數(shù)變?yōu)槠湎喾磾?shù),再用和加法一樣的方法實現(xiàn)減法

input->expn=pre->expn;

input->next=null;

insert(head,input);

}

} return head;}

ploylist *mul(ploylist *head,ploylist *pre)//多項式項乘 { ploylist *hf,*pf,*qa,*qb;

qa = head-> next;

qb = pre-> next;//定義指針指向表頭后一個元素,即鏈表中第一個元素

hf =(ploylist *)malloc(sizeof(ploylist));//新創(chuàng)建一個結(jié)點,當(dāng)做表頭

hf-> next = null;for(;qa;qa = qa-> next)

第13頁 山東科技大學(xué)學(xué)生課程設(shè)計

{

for(qb = pre-> next;qb;qb= qb-> next)//用兩個循環(huán),實現(xiàn)兩個多項式之間每個項相乘,結(jié)果用insert函數(shù)進(jìn)行排序與合并

{

pf =(ploylist *)malloc(sizeof(ploylist));

pf-> coef = qa-> coef * qb-> coef;//系數(shù)相乘

pf-> expn = qa-> expn + qb-> expn;//指數(shù)相加

pf-> next = null;

insert(hf,pf);

} } return hf;}

ploylist *der(ploylist *head)//多項式求導(dǎo) { ploylist *p;p = head-> next;while(p){

p-> coef = p-> coef * p-> expn;

p-> expn = p-> expn--;

p = p-> next;} return head;}//將多項式的每項系數(shù)和指數(shù)相乘得到新的系數(shù),指數(shù)減一得到新的指數(shù)即完成求導(dǎo)

void print(ploylist *fun)//輸出多項式,fun指要輸出的多項式鏈表的表頭 {

ploylist *printing;

int flag=0;

printing=fun->next;

if(fun->next==null)//若為空表,則無需輸出

{

printf(“0n”);

return;

}

while(flag==0)

{

第14頁 山東科技大學(xué)學(xué)生課程設(shè)計

if(printing->coef>0&&fun->next!=printing)

printf(“+”);

if(printing->coef==1);

else if(printing->coef==-1)

printf(“-”);

else

printf(“%f”,printing->coef);

if(printing->expn!=0)printf(“x^%d”,printing->expn);

else if((printing->coef==1)||(printing->coef==-1))

printf(“1”);

if(printing->next==null)

flag=1;

else

printing=printing->next;

} printf(“n”);}

void start()//用戶選擇界面 { printf(“

#n”);

printf(“

用戶選擇界面

n”);

printf(“ ************************************n”);

printf(“ *

*n”);

printf(“ *

1.兩個一元多項式相加

*n”);

printf(“ *

2.兩個一元多項式相減

*n”);

printf(“ *

3.兩個一元多項式相乘

*n”);

printf(“ *

4.對一個一個一元多項式求導(dǎo) *n”);

printf(“ *

0.退出系統(tǒng)

*n”);

printf(“ *

*n”);

printf(“ ************************************n”);

printf(“

n”);

printf(“ 注釋:輸入多項式格式(可無序):系數(shù)1 指數(shù)1 系數(shù)2 指數(shù)2 ??,并以0 0 結(jié)束:n”);

printf(“

n”);

printf(“ 請選擇操作: ”);}

int main(){ ploylist *f,*g,*pf,*hf,*p;

第15頁 山東科技大學(xué)學(xué)生課程設(shè)計

int sign=-1;

start();

while(sign!=0)

{

scanf(“%d”,&sign);

switch(sign)

{

case 0:

break;

case 1://多項式相加

{

printf(“ 你選擇的操作是多項式相加:n”);

printf(“ 請輸入第一個多項式f(x):”);

f=creat('f');

printf(“ 第一個多項式為:f(x)=”);

print(f);

printf(“ 請輸入第二個多項式g(x):”);

g=creat('g');

printf(“ 第二個多項式為:g(x)=”);

print(g);

printf(“ 結(jié)果為:f(x)=f(x)+g(x)=”);

f=add(f,g);

print(f);

printf(“nn”);

printf(“ 繼續(xù)請選擇相應(yīng)操作,;

}

case 2://多項式相減

{

printf(” 你選擇的操作是多項式相減:n“);

printf(” 請輸入第一個多項式f(x):“);

f=creat('f');

printf(” 第一個多項式為:f(x)=“);

print(f);

printf(” 請輸入第二個多項式g(x):“);

g=creat('g');

printf(” 第二個多項式為:g(x)=“);

print(g);

printf(” 結(jié)果為:f(x)=f(x)-g(x)=“);

f=sub(f,g);

print(f);

”);第16頁

山東科技大學(xué)學(xué)生課程設(shè)計

printf(“nn”);

printf(“ 繼續(xù)請選擇相應(yīng)操作,退出請按0.”);

break;

}

case 3://多項式相乘

{

printf(“ 你選擇的操作是多項式相乘:n”);

printf(“ 請輸入第一個多項式f(x):”);

f=creat('f');

printf(“ 第一個多項式為:f(x)=”);

print(f);

printf(“ 請輸入第二個多項式g(x):”);

g=creat('g');

printf(“ 第二個多項式為:g(x)=”);

print(g);

printf(“ 結(jié)果為:f(x)=f(x)* g(x)=”);

pf=mul(f,g);

print(pf);

printf(“nn”);

printf(“ 繼續(xù)請選擇相應(yīng)操作,退出請按0.”);

break;

}

case 4://多項式求導(dǎo)

{

printf(“您選擇的是對一個一元多項式求導(dǎo):n”);

printf(“請輸入一個一元多項式:”);

f = creat('f');

printf(“這個多項式為:f(x)= ”);

print(f);

printf(“求導(dǎo)結(jié)果為:f(x)=f'(x)= ”);

f=der(f);

print(f);

printf(“nn”);

printf(“ 繼續(xù)請選擇相應(yīng)操作,退出請按0.”);

break;

}

}//swith

}//while }//void

四、測試結(jié)果:

第17頁 山東科技大學(xué)學(xué)生課程設(shè)計

第18頁

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計哈夫曼編碼 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計停車場管理系統(tǒng)篇三

數(shù) 據(jù) 結(jié) 構(gòu)

課程設(shè)計報告

題 目: 一元多項式計算 專 業(yè): 信息管理與信息系統(tǒng) 班 級: 2023級普本班 學(xué) 號: 202301011367 姓 名: 左帥帥 指導(dǎo)老師: 郝慎學(xué) 時 間:

一、課程設(shè)計題目分析

本課程設(shè)計要求利用c語言或c++編寫,本程序?qū)崿F(xiàn)了一元多項式的加法、減法、乘法、除法運(yùn)算等功能。

二、設(shè)計思路

本程序采用c語言來完成課程設(shè)計。

1、首先,利用順序存儲結(jié)構(gòu)來構(gòu)造兩個存儲多項式a(x)和 b(x)的結(jié)構(gòu)。

2、然后把輸入,加,減,乘,除運(yùn)算分成五個主要的模塊:實現(xiàn)多項式輸入模塊、實現(xiàn)加法的模塊、實現(xiàn)減法的模塊、實現(xiàn)乘法的模塊、實現(xiàn)除法的模塊。

3、然后各個模塊里面還要分成若干種情況來考慮并通過函數(shù)的嵌套調(diào)用來實現(xiàn)其功能,盡量減少程序運(yùn)行時錯誤的出現(xiàn)。

4、最后編寫main()主函數(shù)以實現(xiàn)對多項式輸入輸出以及加、減、乘、除,調(diào)試程序并將不足的地方加以修改。

三、設(shè)計算法分析

1、相關(guān)函數(shù)說明:

(1)定義數(shù)據(jù)結(jié)構(gòu)類型為線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)類型變量

typedef struct polynomial{}

(2)其他功能函數(shù)

插入函數(shù)void insert(polyn p,polyn h)

比較函數(shù)int compare(polyn a,polyn b)

建立一元多項式函數(shù)polyn create(polyn head,int m)

求解并建立多項式a+b,polyn add(polyn pa,polyn pb)

求解并建立多項式a-b,polyn subtract(polyn pa,polyn pb)2

求解并建立多項式a*b,polyn multiply(polyn pa,polyn pb)

求解并建立多項式a/b,void device(polyn pa,polyn pb)

輸出函數(shù)輸出多項式,void print(polyn p)

銷毀多項式函數(shù)釋放內(nèi)存,void destroy(polyn p)

主函數(shù),void main()

2、主程序的流程基函數(shù)調(diào)用說明(1)typedef struct polynomial {

float coef;

int expn;

struct polynomial *next;} *polyn,polynomial;

在這個結(jié)構(gòu)體變量中coef表示每一項前的系數(shù),expn表示每一項的指數(shù),polyn為結(jié)點指針類型,屬于抽象數(shù)據(jù)類型通常由用戶自行定義,polynomial表示的是結(jié)構(gòu)體中的數(shù)據(jù)對象名。

(2)當(dāng)用戶輸入兩個一元多項式的系數(shù)和指數(shù)后,建立鏈表,存儲這兩個多項式,主要說明如下:

polyn createpolyn(polyn head,int m)建立一個頭指針為head、項數(shù)為m的一元多項式

p=head=(polyn)malloc(sizeof(struct polynomial));為輸入的多項式申請足夠的存儲空間

p=(polyn)malloc(sizeof(struct polynomial));建立新結(jié)點以接收數(shù)據(jù)

insert(p,head);調(diào)用insert函數(shù)插入結(jié)點

這就建立一元多項式的關(guān)鍵步驟

(3)由于多項式的系數(shù)和指數(shù)都是隨即輸入的,所以根據(jù)要求需要對多項式按指數(shù)進(jìn)行降冪排序。在這個程序模塊中,使用鏈表,根據(jù)對指數(shù)大小的比較,對各種情況進(jìn)行處理,此處由于反復(fù)使用指針對各個結(jié)點進(jìn)行定位,找到合適的位置再利用void insert(polyn p,polyn h)進(jìn)行插入操作。(4)加、減、乘、除、的算法實現(xiàn):

在該程序中,最關(guān)鍵的一步是實現(xiàn)四則運(yùn)算和輸出,由于加減算法原則是一樣,減法可通過系數(shù)為負(fù)的加法實現(xiàn);對于乘除算法的大致流程都是:首先建立多項式a*b,a/b,然后使用鏈表存儲所求出的乘積,商和余數(shù)。這就實現(xiàn)了多項式計算模塊的主要功能。

(5)另一個子函數(shù)是輸出函數(shù) printpolyn();

輸出最終的結(jié)果,算法是將最后計算合并的鏈表逐個結(jié)點依次輸出,便得到整鏈表,也就是最后的計算式計算結(jié)果。由于考慮各個結(jié)點的指數(shù)情況不同,分別進(jìn)行了判斷處理。

四、程序新點

通過多次寫程序,發(fā)現(xiàn)在程序在控制臺運(yùn)行時總是黑色的,本次寫程序就想著改變一下,于是經(jīng)過查資料利用system(“color e0”);可以函數(shù)解決,這里“e0,”e是控制臺背景顏色,0是控制臺輸出字體顏色。

五、設(shè)計中遇到的問題及解決辦法

首先是,由于此次課程設(shè)計里使用指針使用比較多,自己在指針多的時候易腦子混亂出錯,對于此問題我是采取比較笨的辦法在稿紙上寫明白后開始進(jìn)行 4

代碼編寫。

其次是,在寫除法模塊時比較復(fù)雜,自己通過查資料最后成功寫出除法模塊功能。

最后是,前期分析不足開始急于寫代碼,中途出現(xiàn)各種問題,算是給自己以后設(shè)計時的一個經(jīng)驗吧。

六、測試(程序截圖)

1.數(shù)據(jù)輸入及主菜單

2.加法和減法模塊

3.乘法和除法模塊

七、總結(jié)

通過本次應(yīng)用c語言設(shè)計一元多項式基本計算程序,使我更加鞏固了c語言程序設(shè)計的知識,以前對指針這一點使用是比較模糊,現(xiàn)在通過此次課程設(shè)計對指針理解的比較深刻了。而且對于數(shù)據(jù)結(jié)構(gòu)的相關(guān)算法和函數(shù)的調(diào)用方面知識的加深。本次的課程設(shè)計,一方面提高了自己獨(dú)立思考處理問題的能力;另一方面使自己再設(shè)計開發(fā)程序方面有了一定的小經(jīng)驗和想法,對自己以后學(xué)習(xí)其他語言程序設(shè)計奠定了一定的基礎(chǔ)。

八、指導(dǎo)老師評語及成績

附錄:(課程設(shè)計代碼)

#include

#include

#include

typedef struct polynomial {

float coef;6

int expn;

struct polynomial *next;} *polyn,polynomial;

//polyn為結(jié)點指針類型 void insert(polyn p,polyn h){

if(p->coef==0)free(p);

//系數(shù)為0的話釋放結(jié)點

else

{

polyn q1,q2;

q1=h;q2=h->next;

while(q2&&p->expn

expn)//查找插入位置

{

q1=q2;q2=q2->next;}

if(q2&&p->expn==q2->expn)//將指數(shù)相同相合并 {

q2->coef+=p->coef;

free(p);

if(!q2->coef)//系數(shù)為0的話釋放結(jié)點

{ q1->next=q2->next;free(q2);}

}

else { p->next=q2;q1->next=p;

}//指數(shù)為新時將結(jié)點插入

} 7

} //建立一個頭指針為head、項數(shù)為m的一元多項式 polyn create(polyn head,int m){

int i;

polyn p;

p=head=(polyn)malloc(sizeof(struct polynomial));

head->next=null;

for(i=0;i

{

p=(polyn)malloc(sizeof(struct polynomial));//建立新結(jié)點以接收數(shù)據(jù)

printf(“請輸入第%d項的系數(shù)與指數(shù):”,i+1);

scanf(“%f %d”,&p->coef,&p->expn);

insert(p,head);

//調(diào)用insert函數(shù)插入結(jié)點

}

return head;} //銷毀多項式p void destroy(polyn p){

polyn q1,q2;

q1=p->next;8

q2=q1->next;

while(q1->next)

{

free(q1);

q1=q2;//指針后移

q2=q2->next;

} } //輸出多項式p int print(polyn p){

polyn q=p->next;

int flag=1;//項數(shù)計數(shù)器

if(!q)//若多項式為空,輸出0

{

putchar('0');

printf(“n”);

return;

}

while(q)

{

if(q->coef>0&&flag!=1)putchar('+');//系數(shù)大于0且不是第一項 9

if(q->coef!=1&&q->coef!=-1)//系數(shù)非1或-1的普通情況

{

printf(“%g”,q->coef);

if(q->expn==1)putchar('x');

else if(q->expn)printf(“x^%d”,q->expn);

}

else

{

if(q->coef==1){

if(!q->expn)putchar('1');

else if(q->expn==1)putchar('x');

else printf(“x^%d”,q->expn);}

if(q->coef==-1){

if(!q->expn)printf(“-1”);

else if(q->expn==1)printf(“-x”);

else printf(“-x^%d”,q->expn);}

}

q=q->next;

flag++;

}

printf(“n”);} int compare(polyn a,polyn b){

if(a&&b)

{

if(!b||a->expn>b->expn)return 1;

else if(!a||a->expn

expn)return-1;

else return 0;

}

else if(!a&&b)return-1;//a多項式已空,但b多項式非空

else return 1;//b多項式已空,但a多項式非空 } //求解并建立多項式a+b,返回其頭指針 polyn add(polyn pa,polyn pb){

polyn qa=pa->next;

polyn qb=pb->next;

polyn headc,hc,qc;

hc=(polyn)malloc(sizeof(struct polynomial));//建立頭結(jié)點 11

hc->next=null;

headc=hc;

while(qa||qb){

qc=(polyn)malloc(sizeof(struct polynomial));

switch(compare(qa,qb))

{

case 1:

qc->coef=qa->coef;

qc->expn=qa->expn;

qa=qa->next;

break;

case 0:

qc->coef=qa->coef+qb->coef;

qc->expn=qa->expn;

qa=qa->next;

qb=qb->next;

break;

case-1:

qc->coef=qb->coef;

qc->expn=qb->expn;

qb=qb->next;

break;12

}

if(qc->coef!=0)

{

qc->next=hc->next;

hc->next=qc;

hc=qc;

}

else free(qc);//當(dāng)相加系數(shù)為0時,釋放該結(jié)點

}

return headc;} //求解并建立多項式a-b,返回其頭指針 polyn subtract(polyn pa,polyn pb){

polyn h=pb;

polyn p=pb->next;

polyn pd;

while(p)//將pb的系數(shù)取反

{ p->coef*=-1;p=p->next;}

pd=add(pa,h);

for(p=h->next;p;p=p->next)

//恢復(fù)pb的系數(shù)

p->coef*=-1;13

return pd;} //求解并建立多項式a*b,返回其頭指針 polyn multiply(polyn pa,polyn pb){

polyn hf,pf;

polyn qa=pa->next;

polyn qb=pb->next;

hf=(polyn)malloc(sizeof(struct polynomial));//建立頭結(jié)點

hf->next=null;

for(;qa;qa=qa->next)

{

for(qb=pb->next;qb;qb=qb->next)

{

pf=(polyn)malloc(sizeof(struct polynomial));

pf->coef=qa->coef*qb->coef;

pf->expn=qa->expn+qb->expn;

insert(pf,hf);//調(diào)用insert函數(shù)以合并指數(shù)相同的項

}

}

return hf;}

//求解并建立多項式a/b,返回其頭指針 void device(polyn pa,polyn pb){

polyn hf,pf,temp1,temp2;

polyn qa=pa->next;

polyn qb=pb->next;

hf=(polyn)malloc(sizeof(struct polynomial));//建立頭結(jié)點,存儲商

hf->next=null;

pf=(polyn)malloc(sizeof(struct polynomial));//建立頭結(jié)點,存儲余數(shù)

pf->next=null;

temp1=(polyn)malloc(sizeof(struct polynomial));

temp1->next=null;

temp2=(polyn)malloc(sizeof(struct polynomial));

temp2->next=null;

temp1=add(temp1,pa);

while(qa!=null&&qa->expn>=qb->expn)

{

temp2->next=(polyn)malloc(sizeof(struct polynomial));

temp2->next->coef=(qa->coef)/(qb->coef);

temp2->next->expn=(qa->expn)-(qb->expn);

insert(temp2->next,hf);

pa=subtract(pa,multiply(pb,temp2));15

qa=pa->next;

temp2->next=null;

}

pf=subtract(temp1,multiply(hf,pb));

pb=temp1;

printf(“商是:”);

print(hf);

printf(“余數(shù)是:”);

print(pf);} void main(){ int choose=1;int m,n,flag=0;system(“color e0”);polyn pa=0,pb=0,pc,pd,pf;//定義各式的頭指針,pa與pb在使用前付初值null printf(“請輸入a(x)的項數(shù):”);scanf(“%d”,&m);printf(“n”);pa=create(pa,m);//建立多項式a printf(“n”);printf(“請輸入b(x)的項數(shù):”);16

scanf(“%d”,&n);printf(“n”);pb=create(pb,n);//建立多項式b printf(“n”);printf(“**********************************************n”);printf(“*

多項式操作菜單

printf(”**********************************************n“);printf(”tt 1.輸出操作n“);printf(”tt 2.加法操作n“);printf(”tt 3.減法操作n“);printf(”tt 4.乘法操作n“);printf(”tt 5.除法操作n“);printf(”tt 6.退出操作n“);printf(”**********************************************n“);while(choose){

printf(”執(zhí)行操作:“);

scanf(”%d“,&flag);

switch(flag)

{

case 1:

printf(”多項式a(x):“);print(pa);*n”);

printf(“多項式b(x):”);print(pb);

break;

case 2:

pc=add(pa,pb);

printf(“多項式a(x)+b(x):”);print(pc);

destroy(pc);break;

case 3:

pd=subtract(pa,pb);

printf(“多項式a(x)-b(x):”);print(pd);

destroy(pd);break;

case 4:

pf=multiply(pa,pb);

printf(“多項式a(x)*b(x):”);

print(pf);

destroy(pf);

break;

case 5:

device(pa,pb);18

break;

case 6:

exit(0);

break;

} }

destroy(pa);

destroy(pb);}

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計哈夫曼編碼 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計停車場管理系統(tǒng)篇四

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計

計算機(jī)科學(xué)與技術(shù)2008級1班

課程設(shè)計題目:圖書借閱管理系統(tǒng)

姓名:

學(xué)號:

一.需求分析說明

圖書借閱處理過程簡述處理過程主要包含:新增圖書上架、辦理圖證、圖書查詢、借書、還書等。

(1)新增圖書上架新書上架時,需要登記新書的:書名、作者、出版社、總冊數(shù)的信息。

(2)辦理圖書借閱證讀者辦理借書證時,需要登記讀者(學(xué)生)的學(xué)號、姓名。(3)圖書查詢讀者按照圖書編號查詢圖書基本信息,并可以得知現(xiàn)還有幾冊可以借閱。

(4)借書每個學(xué)生讀者最多借5本書。讀者借書時,應(yīng)登記書號、借書日期(年月日)。

2.?dāng)?shù)據(jù)分析數(shù)據(jù)處理過程中涉及到兩個實體:圖書和會員;各實體應(yīng)具有的屬性如下:圖書(書號、書名、作者,總冊數(shù))讀者(學(xué)號、姓名、班級)由于同一種圖書可以有多冊上架,每個讀者最多可以借閱5本書,圖書借閱的屬性如下:借閱(書號、借書日期)3.功能分析系統(tǒng)功能模塊包括:圖書增加、圖書刪除、圖書查詢、借書、還書;另外還包括圖書信息修改和讀者信息修改。

二.基本功能

1)圖書管理(增加圖書、查詢圖書、刪除圖書、圖書借閱、還書); 2)會員管理(增加會員、查詢會員、刪除會員、借書信息); 3)系統(tǒng)管理(初始化、載入數(shù)據(jù)、保存數(shù)據(jù)、退出程序);

三.程序設(shè)計

#include

#include

#include#define null 0

typedef struct bookinfo{ /////圖書結(jié)構(gòu)

int b_code;////圖書編號

char b_name[20];/////名稱

int b_total;/////總數(shù)

int b_out;///借出數(shù) bookinfo* nextbook;//////下一類圖書

}bookinfo;

typedef struct memberinfo{ ///會員結(jié)構(gòu)

long m_code;/////會員編號

char m_name[20];////會員名字

int l_codes[6];/////以借書的編號,最多5

memberinfo* nextmember;////下一會員

}memberinfo;

typedef struct system{ ///管理系統(tǒng)結(jié)構(gòu)

bookinfo* bi;

memberinfo* mi;

int booktotal;////圖書類庫存量

int membertota;/////會員數(shù)量

}system;

system* initsystem();/////

void addbook(system*);////增加圖書 bookinfo* searchbook(system*,int);////查詢圖書信息

void delbook(system*);/////刪除圖書

void brrowbook(system*);///////借書處理

void turnbackbook(system*);////還書處理

void addmember(system*);/////添加會員

void delmember(system*);////刪除會員

memberinfo* searchmember(system*,int);/////查詢會員信息

void storedata(system*);

void loaddata(system*);

void exitsystem();

void main(){ system* s=initsystem();

int sel;do{

cout<<“ntttt圖書管理系統(tǒng)”<

cout<<“ttt******************************”<

cout<<“ttt******************************”<

cout<<“ttt 1.增加圖書.t 3.刪除圖書.t 6.添加會員.t 8.查詢會員.t 10.保存數(shù)據(jù).t11.退出程序.n”;

cout<<“ttt******************************”<

cout<<“ttt******************************”<

cout<<“請選擇:”;

do{

cin>>sel;

if(sel>=1&&sel<=11)break;

cout<<“選擇錯誤!n重新輸入:”<

}while(1);

switch(sel){

case 1:addbook(s);break;

case 2:searchbook(s,-1);break;

case 3:delbook(s);break;

case 4:brrowbook(s);;break;

case 5:turnbackbook(s);break;case 6:addmember(s);break;

case 7:delmember(s);break;

case 8:searchmember(s,-1);break;

case 9:loaddata(s);break;

case 10:storedata(s);break;

default:exitsystem();}

}while(1);}

system* initsystem(){

system* s=(system*)malloc(sizeof(system));

s->bi=(bookinfo*)malloc(sizeof(bookinfo));

s->booktotal=0;

s->bi->nextbook=null;

s->mi=(memberinfo*)malloc(sizeof(memberinfo));

s->membertota=0;

s->mi->nextmember=null;

return s;}

void addbook(system* s){ int tempcode;

char sel;

bookinfo* p=s->bi;

bookinfo* t;

bookinfo* m;

int num;do{

cout<<“輸入圖書編號:”;

cin>>tempcode;

if(m=searchbook(s,tempcode)){

cout<<“這類書以有庫存.n輸入圖書的入庫量:”<

cin>>num;

m->b_total+=num;}

else{

t=(bookinfo*)malloc(sizeof(bookinfo));

t->b_code=tempcode;

cout<<“輸入圖書的名稱:”;

cin>>t->b_name;

cout<<“輸入圖書的入庫量:”;

cin>>t->b_total;

t->b_out=0;t->nextbook=p->nextbook;

p->nextbook=t;

s->booktotal++;}

cout<<“添加完畢!”<

cout<<“還要添加嗎?(y/n)”;

cin>>sel;

if(sel=='n'||sel=='n'){

cout<<“結(jié)束添加”<

return;}

}while(1);}

bookinfo* searchbook(system* s,int code){

bookinfo* bi=s->bi->nextbook;

int bookcode;

if(code==-1){

cout<<“請輸入要查詢的圖書編號:”;

cin>>bookcode;}

else bookcode=code;

while(bi&&bi->b_code!=bookcode)bi=bi->nextbook;if(code==-1){

if(!bi)cout<<“沒找到你所要的圖書.”<

else {

cout<<“圖書編號為:”<

b_code<

cout<<“圖書名稱為:”<

b_name<

cout<<“圖書庫存量為:”<

b_total<

cout<<“圖書借出量為:”<

b_out<

return bi;}

void delbook(system* s){

bookinfo* bi;

bookinfo* pl=s->bi;

memberinfo* memi;

char sel;

int tempcode;

int i;do{

pl=s->bi;bi=pl->nextbook;

memi=s->mi->nextmember;

cout<<“請輸入要刪除的圖書的編號:”;

cin>>tempcode;

while(bi){

if(bi->b_code==tempcode)break;

pl=bi;

bi=bi->nextbook;}

if(bi==0)cout<<“沒有找到要刪除的圖書”<

else{

pl->nextbook=bi->nextbook;

s->booktotal--;

while(memi){

for(i=1;i<=memi->l_codes[0];i++){

if(memi->l_codes[i]==tempcode)break;

}

if(i<=memi->l_codes[0]){

for(;i

l_codes[0];i++)memi->l_codes[i]=memi->l_codes[i+1];memi->l_codes[0]--;

}

memi=memi->nextmember;}

free(bi);}

cout<<“還有圖書要刪除嗎?(y/n)”;

cin>>sel;

if(sel=='n'||sel=='n'){

cout<<“刪除圖書結(jié)束”<

return;}

}while(1);}

void brrowbook(system* s){

bookinfo* bi=s->bi->nextbook;

bookinfo* p;

char sel;

int memcode;

memberinfo* mp;

int tempcode;do{

cout<<“輸入要借出的書號:”;

cin>>tempcode;

p=searchbook(s,tempcode);

if(!p){

cout<<“沒有找到要借出的圖書.”<

else{

cout<<“此書的現(xiàn)存量為”<<(p->b_total-p->b_out)<

if(!(p->b_total-p->b_out))cout<<“沒有足夠的書了,外借失敗.”<

else{

cout<<“請輸入會員編號:”;

cin>>memcode;

mp=searchmember(s,memcode);

if(!mp)cout<<“會員編號輸入錯誤,外借失敗”<

else{

if(mp->l_codes[0]==5)cout<<“借書量不能超過5本”;

else{

p->b_out++;

mp->l_codes[++mp->l_codes[0]]=tempcode;

cout<<“外借成功.”<

} } } }

cout<<“n還有圖書要借出嗎?(y/n)”;

cin>>sel;

if(sel=='n'||sel=='n'){

cout<<“外借操作結(jié)束.”<

return;}

}while(1);}

void turnbackbook(system* s){

bookinfo* bi=s->bi->nextbook;

bookinfo* p;

memberinfo* mp;

int membercode;

int tempcode;

int i;

char sel;do{

cout<<“輸入歸還書號:”;cin>>tempcode;

p=searchbook(s,tempcode);

if(!p){

cout<<“書號輸入錯誤.”<

else{

cout<<“此書的現(xiàn)存量為”<<(p->b_total-p->b_out)<

cout<<“請輸入會員編號:”;

cin>>membercode;

if(!(mp=searchmember(s,membercode)))cout<<“會員編號輸入錯誤,歸還失敗”<

else{

p->b_out--;

for(i=1;i<=mp->l_codes[0];i++){

if(mp->l_codes[i]==tempcode)break;

}

while(i

l_codes[0]){

mp->l_codes[i]=mp->l_codes[i+1];

i++;

}

mp->l_codes[0]--;

cout<<“歸還成功.”<

cout<<“還有要?dú)w還的圖書嗎?(y/n)”;

cin>>sel;

if(sel=='n'||sel=='n'){

cout<<“歸還結(jié)束.”<

return;}

}while(1);}

void addmember(system* s){

int tempcode;

char sel;

memberinfo* p=s->mi;

memberinfo* t;do{

cout<<“輸入會員編號:”;

cin>>tempcode;

t=(memberinfo*)malloc(sizeof(memberinfo));

t->m_code=tempcode;

cout<<“輸入會員姓名:”;

cin>>t->m_name;

t->l_codes[0]=0;

t->nextmember=p->nextmember;

p->nextmember=t;

s->membertota++;

cout<<“添加完畢!”<

cout<<“還要添加嗎?(y/n)”;

cin>>sel;

if(sel=='n'||sel=='n'){

cout<<“結(jié)束添加”<

return;}

}while(1);}

memberinfo* searchmember(system* s,int code){

memberinfo* bi=s->mi->nextmember;

int membercode;

int i;

if(code==-1){

cout<<“請輸入要查詢的會員編號:”;

cin>>membercode;}

else membercode=code;

while(bi&&bi->m_code!=membercode)bi=bi->nextmember;

if(code==-1){

if(!bi)cout<<“沒找到指定會員.”<

else {

cout<<“會員編號為:”<

m_code<

cout<<“名稱為:”<

m_name<

cout<<“已借的圖書有:”<

l_codes[0]<<“本.”<

for(i=1;i<=bi->l_codes[0];i++)

cout<

l_codes[i]<<' ';

cout<

return bi;}

void delmember(system* s){

memberinfo* bi;

memberinfo* pl;

bookinfo* book;

char sel;

int i;

int tempcode;do{

bi=s->mi->nextmember;

pl=s->mi;

cout<<“請輸入要刪除的會員的編號:”;

cin>>tempcode;

while(bi){

if(bi->m_code==tempcode)break;

pl=bi;

bi=bi->nextmember;}

if(!bi)cout<<“沒有找到要刪除的會員編號.”;

else{

pl->nextmember=bi->nextmember;

s->membertota--;

for(i=1;i<=bi->l_codes[0];i++){

if(!(book=searchbook(s,bi->l_codes[i]))){

cout<<“刪除會員出錯!”<

}

else{

book->b_out--;

book->b_total--;

} }

free(bi);}

cout<<“還有會員要刪除嗎?(y/n)”;

cin>>sel;

if(sel=='n'||sel=='n'){

cout<<“刪除會員結(jié)束”<

return;}

}while(1);}

void storedata(system* s){

file* fp;

bookinfo* bi=s->bi->nextbook;

if(!(fp=fopen(“booksys”,“wb”))){

cout<<“打開文件booksys失敗!”<

exit(0);}

fwrite(&(s->booktotal),sizeof(int),1,fp);

while(bi){

fwrite(bi,sizeof(bookinfo),1,fp);

bi=bi->nextbook;}

memberinfo* mi=s->mi->nextmember;

fwrite(&(s->membertota),sizeof(int),1,fp);

while(mi){

fwrite(mi,sizeof(memberinfo),1,fp);

mi=mi->nextmember;}

fclose(fp);}

void loaddata(system* s){

file* fp;

if(!(fp=fopen(“booksys”,“rb”))){

cout<<“打開文件booksys失敗”<

exit(0);}

bookinfo* bi=s->bi;

bookinfo* tempbi;

fread(&(s->booktotal),sizeof(int),1,fp);

for(int i=1;i<=s->booktotal;i++){

tempbi=(bookinfo*)malloc(sizeof(bookinfo));

fread(tempbi,sizeof(bookinfo),1,fp);

bi->nextbook=tempbi;

bi=tempbi;}

bi->nextbook=null;

memberinfo* mi=s->mi;

memberinfo* tempmi;

fread(&(s->membertota),sizeof(int),1,fp);

for(i=1;i<=s->membertota;i++){

tempmi=(memberinfo*)malloc(sizeof(memberinfo));

fread(tempmi,sizeof(memberinfo),1,fp);

mi->nextmember=tempmi;

mi=tempmi;} mi->nextmember=null;

fclose(fp);}

void exitsystem(){

char select;

cout<<“警告: 程序結(jié)束后未存儲的數(shù)據(jù)將消失.”<

cout<<“確定要退出嗎?(y/n)”;

cin>>select;

if(select=='y'||select=='y')exit(0);

if(select=='n'||select=='n')return;}

四.心得體會

歷經(jīng)大半個學(xué)期的努力,我的圖書管理系統(tǒng)終于如期完成了。此次做系統(tǒng)給我最大的感觸有兩個。

第一個就是有了一個利用本專業(yè)所學(xué)到的知識,來練習(xí),實踐的機(jī)會。

第二個就是增強(qiáng)了自己的自信心。通過進(jìn)行圖書借閱管理系統(tǒng)的設(shè)計,進(jìn)一步明確了研制一個管理信息系統(tǒng)的方法和思路,將系統(tǒng)開發(fā)的各階段的基本活動貫穿起來,使我更加形象、具體的了解了管理信息系統(tǒng)。系統(tǒng)開發(fā)的過程是一個鞏固以前所學(xué)的計算機(jī)知識,掌握新技能的過程。我從這一階段工作中收益非淺,通過前段時間的課程設(shè)計,我能夠融會貫通所學(xué)的專業(yè)基礎(chǔ)知識和專業(yè)理論知識,培養(yǎng)我們綜合運(yùn)用專業(yè)知識分析問題、解決問題的能力及運(yùn)用工具軟件的能力。不僅弄清了以前對系統(tǒng)開發(fā)的一些模糊的認(rèn)識,而且提高了寫代碼的水平,培養(yǎng)了嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng),為今后在工作崗位上用好管好計算機(jī)打下了堅實的基礎(chǔ)。

在做系統(tǒng)的過程中,我遇到的最大的困難是調(diào)程序方面的。在運(yùn)行程序的過程中經(jīng)常會出現(xiàn)程序自行中斷,需要進(jìn)行調(diào)試的信息。這些信息使得我不得不反復(fù)看書,琢磨程序。在一遍一遍的調(diào)試之下,程序終于被調(diào)通了。那時,我終于可以上上的舒一口氣了。

我的系統(tǒng)規(guī)模比較小同時由于我的時間和能力等多方面的因素影響,我們的系統(tǒng)也存在一定的缺陷。

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計哈夫曼編碼 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計停車場管理系統(tǒng)篇五

課程設(shè)計題目

1、運(yùn)動會分?jǐn)?shù)統(tǒng)計

任務(wù):參加運(yùn)動會有n個學(xué)校,學(xué)校編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=10 , w=8 , n=15)功能要求:

1).可以輸入各個項目的前三名或前五名的成績; 2).能統(tǒng)計各學(xué)校總分(用鏈表);

3).可以按學(xué)校編號、學(xué)校總分、男女團(tuán)體總分排序輸出(快速、基數(shù));

4).可按學(xué)校編號查詢學(xué)校某個項目的情況;可按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。

界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。

存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但是要求運(yùn)動會的相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。

測試數(shù)據(jù):要求使用

1、全部合法數(shù)據(jù);

2、局部非法數(shù)據(jù)。進(jìn)行程序測試,以保證程序的穩(wěn)定。測試數(shù)據(jù)及測試結(jié)果請在上交的資料中寫明;

2、迷宮求解

任務(wù):可以讀入一個任意大小的迷宮數(shù)據(jù),分別用廣度和深度搜索的方法求出一條走出迷宮的路徑,并將路徑輸出(最佳路徑); 要求:以較為直觀的方式顯示結(jié)果

3、huffman編碼

任務(wù) :對一篇英文文章,統(tǒng)計各字符出現(xiàn)的次數(shù),實現(xiàn)huffman編碼; 要求:輸出每個字符出現(xiàn)的次數(shù)和編碼,其中求最小權(quán)值要求用堆實現(xiàn);

4、營業(yè)窗口隊列模擬

任務(wù):實現(xiàn)具有n(n=3)個窗口的現(xiàn)實隊列模擬,統(tǒng)計每人的等待時間。要求:

1).隨機(jī)產(chǎn)生顧客的到達(dá)時間和服務(wù)時間存盤。2).利用存盤數(shù)據(jù)實現(xiàn)隊列的插入和刪除。2).當(dāng)有顧客離開時,根據(jù)隊列長度調(diào)整隊尾。3).考慮顧客中途離隊的情況。4).考慮顧客具有優(yōu)先級的情況。

5、公交線路提示

任務(wù):建立南京主要公交線路圖。要求:輸入任意兩站點,給出最佳的乘車線路和轉(zhuǎn)車地點。

6、家譜管理系統(tǒng)

任務(wù):實現(xiàn)具有下列功能的家譜管理系統(tǒng) 功能要求:

1).輸入文件以存放最初家譜中各成員的信息,成員的信息中均應(yīng)包含以下內(nèi)容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。

2).實現(xiàn)數(shù)據(jù)的存盤和讀盤。3).以圖形方式顯示家譜。

4).顯示第n 代所有人的信息。

5).按照姓名查詢,輸出成員信息(包括其本人、父親、孩子的信息)。6).按照出生日期查詢成員名單。7).輸入兩人姓名,確定其關(guān)系。8).某成員添加孩子。

9).刪除某成員(若其還有后代,則一并刪除)。10).修改某成員信息。

11).按出生日期對家譜中所有人排序。

12).打開一家譜時,提示當(dāng)天生日的健在成員。

要求:建立至少30個成員的數(shù)據(jù),以較為直觀的方式顯示結(jié)果,并提供文稿形式以便檢查。

界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。

存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但是要求相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。測試數(shù)據(jù):要求使用

1、全部合法數(shù)據(jù);

2、局部非法數(shù)據(jù)。進(jìn)行程序測試,以保證程序的穩(wěn)定。測試數(shù)據(jù)及測試結(jié)果請在上交的資料中寫明;

7、排序算法比較

設(shè)計要求:利用隨機(jī)函數(shù)產(chǎn)生10個樣本,每個樣本有50000隨機(jī)整數(shù),利用直接插入排序、折半插入排序,表插入排序,希爾排序,起泡排序、快速排序、選擇排序、堆排序,歸并排序,基數(shù)排序十種排序方法進(jìn)行排序(結(jié)果為由小到大的順序),并統(tǒng)計每一種排序所耗費(fèi)的平均時間(統(tǒng)計為圖表坐標(biāo)形式)。

8、算術(shù)表達(dá)式求值 [問題描述]

一個算術(shù)表達(dá)式是由操作數(shù)(operand)、運(yùn)算符(operator)和界限符(delimiter)組成的。假設(shè)操作數(shù)是正整數(shù),運(yùn)算符只含加減乘除等四種運(yùn)算符,界限符有左右括號和表達(dá)式起始、結(jié)束符“#”,如:#(7+15)*(23-28/4)#。引入表達(dá)式起始、結(jié)束符是為了方便。編程利用“算符優(yōu)先法”求算術(shù)表達(dá)式的值。[基本要求](1)從鍵盤讀入一個合法的算術(shù)表達(dá)式,輸出正確的結(jié)果。(2)顯示輸入序列和棧的變化過程。

9、電子小字典

基本要求:建立一個微型電子字典,實現(xiàn)生詞的加入,單詞的查找、刪除,修改等操作。

數(shù)據(jù)結(jié)構(gòu):鍵樹

10、校園導(dǎo)游程序

[問題描述]用無向網(wǎng)表示你所在學(xué)校的校園景點平面圖,圖中頂點表示主要景點,存放景點的編號、名稱、簡介等信息,圖中的邊表示景點間的道路,存放路徑長度等信息。要求能夠回答有關(guān)景點介紹、游覽路徑等問題。[基本要求](1)查詢各景點的相關(guān)信息;

(2)查詢圖中任意兩個景點間的最短路徑。(3)查詢圖中任意兩個景點間的所有路徑。

(4)增加、刪除、更新有關(guān)景點和道路的信息。

11、稀疏矩陣相乘

任務(wù):以三元組形式存儲稀疏矩陣,實現(xiàn)矩陣相乘。

12、平衡二叉樹

任務(wù):平衡二叉樹的建立、結(jié)點的插入和刪除。

13、b-樹

任務(wù):3階b-樹的結(jié)點的插入和刪除。

14、hash表

任務(wù):以班級學(xué)生姓名(拼音)為關(guān)鍵字,建立hash涵數(shù),實現(xiàn)hash表存儲,用鏈地址方法解決沖突。

15、??(自選合適的題目)

成績評定細(xì)則:

1.正確性:程序是否可以運(yùn)行,結(jié)果是否正確(20分)2.功能的完備性:是否實現(xiàn)要求的所有子功能(20分)

3.課程設(shè)計報告中的算法說明的清晰程度,課程設(shè)計報告中總結(jié)的深刻程度(20分)4.獨(dú)立完成情況(40分)總計:100分

加分項目:

1.健壯性:異常處理的情況

2.可讀性:代碼編寫是否規(guī)范,是否便于閱讀。如函數(shù)、變量命名,‘{ }’的縮進(jìn),關(guān)鍵位置適量注釋等

3.功能的完善:除要求實現(xiàn)的功能外,完成了其它的功能,實現(xiàn)了功能的完善 4.界面的設(shè)計:可視化界面,或者交互良好的dos界面 5.……(自薦加分項目)

代碼量要求:>=1000行。

代碼總量 = 課設(shè)題目1 代碼量 + 課設(shè)題目2 代碼量…… 若代碼總量低于1000行,則成績按比例打折。

編程語言:c或c++語言

編程環(huán)境:microsoft visual c++ 6.0

檢查方式: 1.總體上檢查程序的代碼量,正確性,可讀性,健壯性,功能的完備性,代碼量,程序的結(jié)構(gòu)是否合理;局部檢查三個以上函數(shù)塊 2.檢查程序時同時檢查課程設(shè)計報告的電子文檔

時間安排: 上機(jī)時間安排 課程設(shè)計報告上交時間 3 課程設(shè)計檢查時間

課程設(shè)計報告要求:

1.所有的課程設(shè)計報告,均要有封面,包括:課題名稱、班級、學(xué)號、學(xué)生姓名、成績和指導(dǎo)教師;

2.給出自己采用的數(shù)據(jù)結(jié)構(gòu); 3.給出算法設(shè)計思想;

4.給出實現(xiàn)的源程序,并在必要的代碼處給出注釋; 5.給出測試數(shù)據(jù)和結(jié)果;

6.給出算法的時間復(fù)雜度、另外可以提出算法的改進(jìn)方法;

7.給出結(jié)束語:說明完成課程設(shè)計的情況,心得體會;課程設(shè)計報告的電子文檔在上機(jī)檢查程序時一并檢查;書面文檔在指定的時間內(nèi)上交。

熱門排序

信息流廣告 網(wǎng)絡(luò)推廣 周易 易經(jīng) 代理招生 二手車 網(wǎng)絡(luò)營銷 招生代理 旅游攻略 非物質(zhì)文化遺產(chǎn) 查字典 精雕圖 戲曲下載 抖音代運(yùn)營 易學(xué)網(wǎng) 互聯(lián)網(wǎng)資訊 成語 成語故事 詩詞 工商注冊 注冊公司 抖音帶貨 云南旅游網(wǎng) 網(wǎng)絡(luò)游戲 代理記賬 短視頻運(yùn)營 在線題庫 國學(xué)網(wǎng) 知識產(chǎn)權(quán) 抖音運(yùn)營 雕龍客 雕塑 奇石 散文 自學(xué)教程 常用文書 河北生活網(wǎng) 好書推薦 游戲攻略 心理測試 好做題 石家莊人才網(wǎng) 考研真題 漢語知識 心理咨詢 手游安卓版下載 興趣愛好 網(wǎng)絡(luò)知識 十大品牌排行榜 商標(biāo)交易 單機(jī)游戲下載 短視頻代運(yùn)營 寶寶起名 范文網(wǎng) 電商設(shè)計 職業(yè)培訓(xùn) 免費(fèi)發(fā)布信息 服裝服飾 律師咨詢 搜救犬 Chat GPT中文版 經(jīng)典范文 優(yōu)質(zhì)范文 工作總結(jié) 二手車估價 實用范文 愛采購代運(yùn)營 古詩詞 衡水人才網(wǎng) 石家莊點痣 養(yǎng)花 名酒回收 石家莊代理記賬 女士發(fā)型 搜搜作文 石家莊人才網(wǎng) 銅雕 詞典 圍棋 chatGPT 讀后感 玄機(jī)派 企業(yè)服務(wù) 法律咨詢 chatGPT國內(nèi)版 chatGPT官網(wǎng) 勵志名言 河北代理記賬公司 文玩 朋友圈文案 語料庫 游戲推薦 男士發(fā)型 高考作文 PS修圖 兒童文學(xué) 買車咨詢 工作計劃 禮品廠 舟舟培訓(xùn) IT教程 手機(jī)游戲推薦排行榜 暖通,電采暖, 女性健康 苗木供應(yīng) 主題模板 短視頻培訓(xùn) 優(yōu)秀個人博客 包裝網(wǎng) 創(chuàng)業(yè)賺錢 養(yǎng)生 民間借貸律師 綠色軟件 安卓手機(jī)游戲 手機(jī)軟件下載 手機(jī)游戲下載 單機(jī)游戲大全 免費(fèi)軟件下載 石家莊網(wǎng)絡(luò)推廣 石家莊招聘 石家莊網(wǎng)絡(luò)營銷 培訓(xùn)網(wǎng) 網(wǎng)賺 手游下載 游戲盒子 職業(yè)培訓(xùn) 資格考試 成語大全 英語培訓(xùn) 藝術(shù)培訓(xùn) 少兒培訓(xùn) 苗木網(wǎng) 雕塑網(wǎng) 好玩的手機(jī)游戲推薦 漢語詞典 中國機(jī)械網(wǎng) 美文欣賞 紅樓夢 道德經(jīng) 網(wǎng)站轉(zhuǎn)讓 鮮花
194923
領(lǐng)取福利

微信掃碼領(lǐng)取福利

微信掃碼分享

主站蜘蛛池模板: 99久久一区 | 2018av男人天堂 | 五月天网站最新的网址 | 国产资源精品一区二区免费 | 国产福利在线视频 | 啊嗯啊羞羞免费视频 | a男人的天堂久久a毛片 | 国产成人久久精品激情 | 999无色码中文字幕 999视频精品全部免费观看 | 久久久一本 | 五月天激激婷婷大综合丁香 | 欧美亚洲国产一区二区三区 | 五月婷婷伊人网 | 国产福利专区精品视频 | 久久精品国产国产精品四凭 | 成人丁香乱小说 | 欧美一区二区在线观看视频 | 欧美男女交性过程视频 | 欧美日本一区视频免费 | 米奇影院888 | 都市激情男人天堂 | 久久青草免费线观最新 | 国产精品视频在 | 欧美性视频在线 | 95免费观看体验区视频 | 国产永久免费高清动作片www | 久久国产精品久久精品国产 | 三区在线视频 | 我想看一级播放片一级的 | 少女集中营 电影 | 日本不卡免费新一区二区三区 | 五月天激情亚洲婷婷在线 | 欧洲精品一区二区三区 | 免费特黄一区二区三区视频一 | 四虎网站在线播放 | 国产精品久久久久久久久久久威 | 理论片一级| 五月精品| 国产精品久久久香蕉 | 九九九在线视频 | 欧美成人一区二区三区不卡 |