第一篇:中國(guó)地質(zhì)大學(xué)(武漢)空間數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告
空間數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告
學(xué)生姓名:孫國(guó)歡 班 學(xué) 號(hào):113131-05 指導(dǎo)老師:周琪
中國(guó)地質(zhì)大學(xué)信息工程學(xué)院
2015年10月
線簡(jiǎn)化算法的程序?qū)崿F(xiàn)及比較研究
一、實(shí)習(xí)內(nèi)容:程序?qū)崿F(xiàn)兩種或以上的線簡(jiǎn)化算法,并比較各種算法的優(yōu)劣。
二、實(shí)習(xí)要求:程序?qū)崿F(xiàn)以下四種線簡(jiǎn)化算法中的兩種或以上。
三、實(shí)習(xí)原理
i.基于點(diǎn)數(shù)的線簡(jiǎn)化算法(Num of points)
ii.基于長(zhǎng)度的線簡(jiǎn)化算法(Length)
iii.基于角度的線簡(jiǎn)化算法(Angle)
iv.基于垂距的線簡(jiǎn)化算法(Perpendicular distance)
v.Douglas-Peucker(1988)
vi.Whirlpool(1980)
四、實(shí)習(xí)過程與成果
過程分析:
這次空間數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)主要是圍繞幾個(gè)課上講的基本算法和Douglas-Peucker、Whirlpool算法來實(shí)現(xiàn)線簡(jiǎn)化算法。
我做了基于點(diǎn)數(shù)的線簡(jiǎn)化算法、基于長(zhǎng)度的線簡(jiǎn)化算法、基于角度的線簡(jiǎn)化算法、Douglas-Peucker和Whirlpool算法。
前三個(gè)算法的思想十分明確,是利用C++中的點(diǎn)的坐標(biāo)結(jié)合基本函數(shù)可以實(shí)現(xiàn)。Douglas-Peucker算法的基本思路是對(duì)每條曲線的首末點(diǎn)虛線連接一條直線,求所有點(diǎn)與直線的距離并求出最大距離Dmax,再用Dmax與限差d相比較然后進(jìn)行取舍。Whirlpool算法則是利用每個(gè)點(diǎn)設(shè)定r值畫圓進(jìn)行分類和取舍,成果展示:
基于點(diǎn)數(shù)的線簡(jiǎn)化算法 point=3
基于長(zhǎng)度的線簡(jiǎn)化算法 length=40
基于角度的線簡(jiǎn)化算法 angle=90°
DP算法 垂距d=20
Whirlpool算法 r=40
基于點(diǎn)數(shù)的線簡(jiǎn)化算法 point=3
基于長(zhǎng)度的線簡(jiǎn)化算法 length=60
基于角度的線簡(jiǎn)化算法 angle=75°
DP算法 垂距d=30
Whirlpool算法 r=50
---------------分界線------------------
基于點(diǎn)數(shù)的線簡(jiǎn)化算法 point=3
基于長(zhǎng)度的線簡(jiǎn)化算法 length=50
基于角度的線簡(jiǎn)化算法 angle=60°
Whirlpool算法 r=40 DP算法得線簡(jiǎn)化結(jié)果為點(diǎn)(39,62)
-------分界線-------------------
基于點(diǎn)數(shù)的線簡(jiǎn)化算法 point=4
基于長(zhǎng)度的線簡(jiǎn)化算法 length=40
基于角度的線簡(jiǎn)化算法 angle=90°
DP算法 垂距d=20
Whirlpool算法 r=30
--------分界線------------------
基于點(diǎn)數(shù)的線簡(jiǎn)化算法 point=3
基于長(zhǎng)度的線簡(jiǎn)化算法 length=30
基于角度的線簡(jiǎn)化算法 angle=60°
DP算法 垂距d=30
Whirlpool算法 r=25
五、思考與感想
實(shí)習(xí)思考:
針對(duì)基于點(diǎn)數(shù)的線簡(jiǎn)化算法、基于長(zhǎng)度的線簡(jiǎn)化算法、基于角度的線簡(jiǎn)化算法、Douglas-Peucker和Whirlpool算法,我共采取了五組實(shí)驗(yàn)數(shù)據(jù),分別表示五種圖形數(shù)據(jù)。源數(shù)據(jù)1是一個(gè)普通的彎折直線圖,源數(shù)據(jù)2是一個(gè)起伏相當(dāng)明顯且角度多變的圖形,源數(shù)據(jù)3是一個(gè)閉合的多邊形,源數(shù)據(jù)4是一個(gè)近乎一端開口的矩形,源數(shù)據(jù)5是一個(gè)彎折且有重疊的折線圖。
我認(rèn)為這五種情況的線性矢量數(shù)據(jù)采用不同的線簡(jiǎn)化算法產(chǎn)生的結(jié)果也決然不同。其中值得一提的是源數(shù)據(jù)3(閉合多邊形)在Douglas-Peucker算法下簡(jiǎn)化為一個(gè)點(diǎn),這與DP算法的原理有關(guān),所有除首尾的點(diǎn)被舍去因而結(jié)果簡(jiǎn)化完只有一個(gè)頂點(diǎn)。而源數(shù)據(jù)4(一端開口的近矩形)在基于角度的線簡(jiǎn)化算法去angle=90°時(shí)完全簡(jiǎn)化成一個(gè)矩形,也反映了基于角度的線簡(jiǎn)化算法的原理使其去了四方頂點(diǎn)。
比較我所探索的這五種線簡(jiǎn)化方法:基于點(diǎn)數(shù)的線簡(jiǎn)化算法、基于長(zhǎng)度的線簡(jiǎn)化算法、基于角度的線簡(jiǎn)化算法、Douglas-Peucker和Whirlpool算法。我認(rèn)為它們都具有鮮明的優(yōu)劣勢(shì)。
① 基于點(diǎn)數(shù)的線簡(jiǎn)化算法:取相對(duì)應(yīng)的隔點(diǎn)數(shù)并保留首尾點(diǎn),方便快捷但效果一般
② 基于長(zhǎng)度的線簡(jiǎn)化算法:取相對(duì)應(yīng)的點(diǎn)與點(diǎn)的距離并保留首尾點(diǎn),刨去了冗余的點(diǎn),簡(jiǎn)化效果良好。
③ 基于角度的線簡(jiǎn)化算法:取相對(duì)應(yīng)的點(diǎn)與點(diǎn)的角度并保留首尾點(diǎn),基本上擇彎取直,簡(jiǎn)化效果良好。
④ Douglas-Peucker算法:求所有點(diǎn)與對(duì)每條曲線的首末點(diǎn)連接的直線的距離并求出最大距離Dmax,再用Dmax與垂距d比較后取舍。舍去了一些線性矢量數(shù)據(jù)上的點(diǎn),形成了鮮明的結(jié)果,但是過程比較冗雜。⑤ Whirlpool算法:對(duì)設(shè)定的半徑r給每個(gè)點(diǎn)作圓并進(jìn)行取舍,使線性矢量數(shù)據(jù)的點(diǎn)的分布更加清晰,刨去了密集區(qū)的重復(fù)點(diǎn),但不簡(jiǎn)便。
實(shí)習(xí)感想:
通過這次空間數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí),我學(xué)到了很多。在此次實(shí)習(xí)中,我對(duì)這門課有了更加深刻的認(rèn)識(shí),學(xué)會(huì)了把所學(xué)的理論知識(shí)和實(shí)踐聯(lián)系起來。
對(duì)于我來說不僅是設(shè)計(jì)算法來實(shí)現(xiàn)線簡(jiǎn)化算法,最為珍貴的是在我準(zhǔn)備這次實(shí)習(xí)所鞏固的以前不熟悉的知識(shí)。它培養(yǎng)了我們由書面文字要求到轉(zhuǎn)化這種要求到現(xiàn)實(shí)模型的能力,即很大程度上培養(yǎng)了我們的建模能力,分析問題,總結(jié)歸納問題的能力。這次實(shí)習(xí)也遇到了一些難關(guān),但它們給了我們思索的機(jī)會(huì)。我們通過克服這一個(gè)個(gè)困難,讓我們重新又對(duì)目前腦子里所掌握的知識(shí)進(jìn)行審理,進(jìn)行了再次的糾正或者完善,這些都是書本上學(xué)不來的。理論聯(lián)系實(shí)際就在這里自然地得到實(shí)現(xiàn)。這對(duì)我們鞏固已學(xué)知識(shí),鍛煉實(shí)踐動(dòng)手能力大有裨益。
在這次實(shí)習(xí)中,我覺得我最大的收獲就是學(xué)會(huì)了為了實(shí)現(xiàn)這些算法,我該如何去構(gòu)建這樣的框架。實(shí)習(xí)的這幾周,我從只理解書面上的線簡(jiǎn)化算法原理,到現(xiàn)在實(shí)現(xiàn)這樣的過程,中間也遇到了很多困難和挫折。在程序的編寫過程中,也出現(xiàn)了很多錯(cuò)誤,經(jīng)過我認(rèn)真修改,查閱資料,向老師和同學(xué)們請(qǐng)教,終于把那些錯(cuò)誤都改正過來,最終使程序能夠結(jié)合要求的算法正確的運(yùn)行。我再通過繪制excel表格來進(jìn)一步了解各種不同的線簡(jiǎn)化算法會(huì)出現(xiàn)什么樣的結(jié)果。所以說,這次實(shí)習(xí)不僅是讓我學(xué)到了各種線簡(jiǎn)化算法的方法,更重要的是它提高了我理論轉(zhuǎn)化為實(shí)踐的能力。謝謝老師在空間數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)過程中給予的幫助。最后祝老師工作順利,身體健康。
學(xué)生姓名:孫國(guó)歡
班 學(xué) 號(hào):113131-05
中國(guó)地質(zhì)大學(xué)信息工程學(xué)院 2015年10月
第二篇:中國(guó)地質(zhì)大學(xué)(武漢)數(shù)據(jù)結(jié)構(gòu)報(bào)告
Practice Report for Data Structures and Algorithm Analysis
Data Structures Course Report
Candidate:
吳澤光
Student Number: 20121001873 Major :
Communication Engineering Supervisor :
Wu rangzhong
China University of Geosciences(Wuhan)Wuhan, Hubei 430074, P.R.China
October 18, 2012
China University of Geosciences, Faculty of Mechanics and Electronic Information
一、線性表(用鏈表實(shí)現(xiàn)):
1、目的:
通過程序的運(yùn)用,使得線性表的插入、刪除等功能更加容易實(shí)現(xiàn),節(jié)約了時(shí)間和精力。
2、程序說明:
typedef struct LNode * LinkList;typedef int Status;struct LNode { int data;struct LNode * next;};void Insert(LinkList &L,int i,int b);void Delete(LinkList &L,int i);int Length(LinkList &L);void Print_LinkList(LinkList &L);插入函數(shù):
void Insert(LinkList &L,int i,int x){ LinkList p, q;p=L;q=(LinkList)malloc(sizeof(LNode));q->data=x;if(i==1){
q->next=p;L=q;} else
定義結(jié)構(gòu)體。插入函數(shù)。刪除函數(shù)。輸出長(zhǎng)度。輸出線性表內(nèi)容。
} {
} while(--i>1)p=p->next;q->next=p->next;p->next=q;
3、運(yùn)行過程:
二、堆棧和隊(duì)列
1、目的:
通過程序的運(yùn)用,使得隊(duì)列的插入、刪除等功能更加容易實(shí)現(xiàn),節(jié)約了時(shí)間和精力。
2、程序說明:
struct My_Queue {
int Element[MaxLength];int Length;int head;int rear;};定義結(jié)構(gòu)體。int Head_Queue(My_Queue &Que);功能:返回隊(duì)列頭結(jié)點(diǎn)的值
參數(shù):Que,引用類型,指向隊(duì)列的頭。
void Print_Queue(My_Queue &Que);輸出隊(duì)列的內(nèi)容。void In_Queue(My_Queue &Que,int Element);輸入隊(duì)列。void Out_Queue(My_Queue &Que, int &Element);輸出隊(duì)列。主函數(shù): void main(){
} My_Queue My_Fst_Que;My_Fst_Que.Length = 0;int data = 0;My_Fst_Que.head = My_Fst_Que.rear =0;Input_Queue(My_Fst_Que, 2);Print_Queue(My_Fst_Que);Input_Queue(My_Fst_Que, 4);Print_Queue(My_Fst_Que);Input_Queue(My_Fst_Que, 6);Print_Queue(My_Fst_Que);Input_Queue(My_Fst_Que, 8);Print_Queue(My_Fst_Que);Input_Queue(My_Fst_Que, 10);Print_Queue(My_Fst_Que);
Out_Queue(My_Fst_Que, data);Print_Queue(My_Fst_Que);Out_Queue(My_Fst_Que, data);Print_Queue(My_Fst_Que);Out_Queue(My_Fst_Que, data);Print_Queue(My_Fst_Que);Out_Queue(My_Fst_Que, data);data = Head_Queue(My_Fst_Que);Print_Queue(My_Fst_Que);
3、運(yùn)行過程:
三、字符串的模式匹配
1、目的:
輸入目標(biāo)串和模式串,運(yùn)用KMP算法判斷是否匹配。
2、程序說明:
typedef struct String String_KMP;struct String { char * data;int length;};定義結(jié)構(gòu)體。
int KMPMatch(String_KMP &s, String_KMP &t , int next[]);功能:用于檢測(cè)返回值情況。主函數(shù): void main(){
String_KMP s, p1;int *next_KMP, position=0;p1.data = “&&aaaaa”;
} p1.length = strlen(p1.data);s.data =“&&&aaaaabaabcwwww”;s.length = strlen(s.data);next_KMP=(int *)malloc(sizeof(int)* strlen(p1.data));next(p1, next_KMP);position = KMPMatch(s, p1 , next_KMP);if(position == 0)printf(“No match!n”);else printf(“The match position is %dn”, position);
3、運(yùn)行過程:
1、匹配成功:
2、不能匹配:
四、稀疏矩陣(表示轉(zhuǎn)置和乘法)
1、目的:
通過對(duì)矩陣的基本操作,了解多維數(shù)組的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)。本程序是用三元數(shù)組表示矩陣,并進(jìn)行相關(guān)的操作,將矩陣表示出來,以及快速轉(zhuǎn)置的應(yīng)用。
2、程序說明:
typedef struct { Triple data[MAXSIZE+1];int mu,nu,tu;} TSMatrix;
int InputMatrix(TSMatrix &M);void PrintM(TSMatrix M);void PrintM3(TSMatrix M);void trantup(TSMatrix M, TSMatrix &T);主函數(shù): void main(){
} int a;TSMatrix M,T;a=InputMatrix(M);printf(“n按三元組方式輸出:n”);PrintM3(M);printf(“n下面進(jìn)行矩陣轉(zhuǎn)置的操作:n”);system(“PAUSE”);system(“cls”);printf(“n要轉(zhuǎn)置的矩陣為:n”);PrintM(M);trantup(M,T);printf(“n轉(zhuǎn)置后的矩陣為:n”);PrintM(T);
3、運(yùn)行過程:
五 AVL樹實(shí)現(xiàn)
1、目的:
通過程序的運(yùn)用,使得樹的相關(guān)功能更加容易實(shí)現(xiàn),節(jié)約了時(shí)間和精力。
2、程序說明:
求根深度的實(shí)現(xiàn)所用到的:
Status InitBiTree(SqBiTree T);Status CreateBiTree(SqBiTree T);Status BiTreeEmpty(SqBiTree T);int BiTreeDepth(SqBiTree T);Status Root(SqBiTree T,TElemType *e);
3、運(yùn)行過程:
六、圖的實(shí)現(xiàn):
1、目的:
通過程序的運(yùn)用,使得圖的有關(guān)功能更加容易實(shí)現(xiàn),節(jié)約了時(shí)間和精力。
2、程序說明:
實(shí)現(xiàn)圖的輸出和遍歷用到的: void CreateGraph(Graph *ga);void DFS(Graph g,int i,bool visited[]);void DFSTraverse(Graph g);void BFSTraverse(Graph g,Queue *que);
3、運(yùn)行過程:
七、排序(希爾排序與歸并排序):
1、目的:
通過程序的運(yùn)用,使得數(shù)據(jù)的排序更加容易實(shí)現(xiàn),節(jié)約了時(shí)間和精力。
2、程序說明:
1)希爾排序的具體實(shí)現(xiàn): void ShellSort(RecType R[],int n){ int i,j,gap,k;RecType tmp;gap=n/2;while(gap>0){ for(i=gap;i { tmp=R[i]; j=i-gap; while(j>=0 && tmp.key { R[j+gap]=R[j]; j=j-gap;} R[j+gap]=tmp; j=j-gap;} printf(“gap=%d:”,gap); for(k=0;k printf(“%d ”,R[k].key);printf(“n”);gap=gap/2;} } 2)歸并排序: 歸并排序的實(shí)現(xiàn)所用到的: int randGenerator(double vArray[],int n);int Merge(double vArray[],double Lr[],int i,int m,int n);int Msort(double vArray[],double Lr[],int s,int t); 3、運(yùn)行過程: 總結(jié) 通過本次的實(shí)習(xí),使我掌握了模塊化設(shè)計(jì)方法,理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法。提高了利用C語言進(jìn)行程序設(shè)計(jì)能力。 第一次設(shè)計(jì)這么多程序,感覺壓力很大,很難完成,雖然看起來設(shè)計(jì)流程感覺很輕松,但是正真完成的時(shí)候并不能通過程序表達(dá)出來。通過同學(xué)和老師的幫助最終還是完成了自己的程序設(shè)計(jì),雖然程序還不是很完美,但能滿足題目的各項(xiàng)要求,相信以后再次進(jìn)行程序設(shè)計(jì)的時(shí)候會(huì)得心應(yīng)手。 Practice Report for Data Structures and Algorithm Analysis Data Structures Course Report Candidate: Student Number: Major: Communication Engineering Supervisor: Wu rangzhong China University of Geosciences(Wuhan)Wuhan, Hubei 430074, P.R.China May 18, 2013 China University of Geosciences, Faculty of Mechanics and Electronic Information 刪除程序代碼 void DeletekTh(int position, pNode L){ pNode Tmp=L, TmpPre=NULL; int i=0; for(i=0;i { if(Tmp->next!=NULL) { TmpPre = Tmp; Tmp=Tmp->next; } else if(Tmp->next==NULL && i { printf(“The Deletion position is invalid!n”); return; } } TmpPre->next=Tmp->next; free(Tmp);} 這是程序主函數(shù),以此來完成以上子函數(shù)的功能 #include int main(){ int i,x,position;pNode m; pNode LinkLists; { printf(“輸入元素來建立鏈表,0為結(jié)束輸入的標(biāo)志”); LinkLists = CreateLinkLists(); printf(“鏈表為:”); PrintLists(LinkLists); } printf(“選擇你需要的操作,輸入序號(hào):n”); printf(“ 1.建立一個(gè)鏈表 n”); printf(“ 2.輸出鏈表 n”); } 2.數(shù)組實(shí)現(xiàn)線性表 用數(shù)組實(shí)現(xiàn)的功能和用鏈表表示的相同 部分子函數(shù)如下 //初始化順序表:給出初始化長(zhǎng)度 int initialArray(arrayList arrLst,int len) { arrLst->length=0; arrLst->size=len; arrLst->Array=(ElemType*)malloc(len*sizeof(ElemType)); if(arrlst->Array==NULL) return 0; else return 1; } //刪除順序表 void deleteArray(arrayList arrLst) { arrLst->length=0; arrLst->size=0; free(arrLst->Array); arrLst->Array=NULL; } //清空順序表 void clearArray(arrayList arrLst) { } printf(“n”); } //判斷某個(gè)元素的位置 int locateElem(arrayList arrLst,ElemType e) { int i; for(i=0;i { if(e==arrLst->Array[i]) return i; } return-1; } 堆棧 主要是實(shí)現(xiàn)元素的進(jìn)棧、出棧、判斷棧中元素個(gè)數(shù) 堆棧的源函數(shù) #include STACK CreatStack(){ STACK S; S=(STACK)malloc(sizeof(struct Stack)); if(S==NULL) { printf(“無法建立堆棧!”); return 0; } S->top=-1; return S;} int IsFull(STACK S){ return(S->top==MAX-1);} int IsEmpty(STACK S){ int StackLen(STACK S){ if(!IsEmpty(S)) return S->top;else return 0;} 堆棧的主函數(shù) #include void main(){ STACK liliS; liliS=CreatStack(); Push(1,liliS); Push(2,liliS); Push(3,liliS); Pop(liliS); Pop(liliS); DisposeStack(liliS);} 設(shè)置斷點(diǎn)可以看到棧中的元素 主函數(shù) void main(){ STRING *Str, *Pat;int position=0;Str=(STRING *)malloc(sizeof(STRING));Pat=(STRING *)malloc(sizeof(STRING));char S_str[20]=“ababcabcacbab”;char P_str[20]=“abcac”; Str->p_str = S_str;Str->length = strlen(S_str);Pat->p_str = P_str;Pat->length = strlen(P_str); int *next=(int *)malloc(sizeof(int)*(Pat->length +1)); GetNext(Pat, next);position=IndexKMP(Str, Pat, next); printf(“%dn”,position);} 顯示兩個(gè)字符串是在第6個(gè)元素開匹配的。 } //插入新元素 M->data[p].i=row; M->data[p].j=col; M->data[p].e=e; M->tu++; return OK; } 稀疏矩陣的的轉(zhuǎn)置 Status TransposeSMatrix(const TSMatrix *M,TSMatrix *T){ int col,p,q; T->mu=M->nu; T->nu=M->mu;T->tu=M->tu; if(T->tu){ q=1; for(col=1;col<=M->mu;col++) for(p=1;p<=M->tu;p++) if(M->data[p].j==col){ T->data[q].i=M->data[p].j; T->data[q].j=M->data[p].i; T->data[q].e=M->data[p].e; q++; } } return OK; } 稀疏矩陣的乘法 Status MultSMatrix(const TSMatrix *M,const TSMatrix *T,TSMatrix *Q){ int i,j,k,p; ElemType m,t,s; if(M->nu!=T->mu){ printf(“Sorry,these two matrice can't multiply.n”); return ERROR; } Q->mu=M->mu; Q->nu=T->nu; Q->tu=0; p=1; for(i=1;i<=Q->mu;i++){ for(j=1;j<=Q->nu;j++){ s=0; for(k=1;k<=M->nu;k++){ if(FALSE==FindElem(M,i,k,&m)) 查找 采用的是快速查找法 源程序 #include int SequenceSearch(int array[],int n,int x){ int i=0; while(i i++; if(i==n) return-1; else return i;} 建立一個(gè)數(shù)組后查找元素,輸入元素后,返回元素所在數(shù)組的下標(biāo)。 5用數(shù)組儲(chǔ)存數(shù)據(jù),在用冒泡法排序后將排序好的數(shù)組輸出。 AVL樹 程序主要是在向二叉樹插入節(jié)點(diǎn)后,最終生成AVL樹 AVL樹中的單旋轉(zhuǎn) static Position SRL(Position K2) { Position K1 = NULL; K1 = K2->left; K2->left = K1->right; K1->right = K2; K2->height = MAX(Height(K2->left), Height(K2->right))+ 1; K1->height = MAX(Height(K1->left), Height(K2))+ 1; return K1;} static Position SRR(Position K2) { Position K1 = NULL; #else Position K1 = NULL; Position K2 = NULL; K1 = K3->right; K2 = K1->left; K1->left = K2->right; K2->right = K1; K3->right = K2->left; K2->left = K3; return K2; #endif } 主程序 #include void PrintTree(AvlTree T) { if(T!= NULL) { PrintTree(T->left); printf(“h=%d, e=%dn”, T->height, T->ele); PrintTree(T->right); } } int main(void) { AvlTree T = NULL; T = MakeEmpty(T); T = Insert(3, T); T = Insert(2, T); T = Insert(1, T); T = Insert(4, T); T = Insert(5, T); T = Insert(6, T); T = Insert(7, T); T = Insert(16, T); T = Insert(15, T); T = Insert(14, T); T = Insert(13, T); s->bottom=0; s->top=0; memset(s->printout,0,sizeof(int)*MAX_LEN);} void push(mstack *s,int m){ s->printout[s->top++]=m;} int pop(mstack *s){ return s->printout[--s->top];} void InitGraph(Graph *g,int n){ int i,j; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j)g->matrix[i][j]=0; else g->matrix[i][j]=INFINITE; } for(i=1;i<=n;i++) { in[i]=0; Len[i]=INFINITE; path[i]=0; } } 1、需求規(guī)格說明 【問題描述】 利用哈夫曼編碼進(jìn)行對(duì)已有文件進(jìn)行重新編碼可以大大提高減小文件大小,減少存儲(chǔ)空間。但是,這要求在首先對(duì)一個(gè)現(xiàn)有文件進(jìn)行編碼行成新的文件,也就是壓縮。在文件使用時(shí),再對(duì)壓縮文件進(jìn)行解壓縮,也就是譯碼,復(fù)原原有文件。試為完成此功能,寫一個(gè)壓縮解壓縮軟件。 【基本要求】 (1)壓縮準(zhǔn)備。讀取指定被壓縮文件,對(duì)文件進(jìn)行分析,建立哈夫曼樹,并給出分析結(jié)果(包括數(shù)據(jù)集大小,每個(gè)數(shù)據(jù)的權(quán)值,壓縮前后文件的大?。谄聊簧陷敵?。 (2)壓縮。利用已建好的哈夫曼樹,對(duì)文件進(jìn)行編碼,并將哈夫曼編碼及文件編碼后的數(shù)據(jù)一起寫入文件中,形成壓縮文件。 (3)解壓縮。打開已有壓縮文件,讀取其中的哈夫曼編碼,構(gòu)建哈夫曼樹,讀取其中的數(shù)據(jù),進(jìn)行譯碼后,寫入文件,完成解壓縮。 2.總體分析與設(shè)計(jì) 【設(shè)計(jì)思想】 將一待壓縮的文件以二進(jìn)制形式進(jìn)行讀寫。壓縮過程中,將待壓縮文件一次性讀入內(nèi)存,隨后對(duì)其中出現(xiàn)的字符進(jìn)行判斷和統(tǒng)計(jì),將所得的字符頻率創(chuàng)建HuffMan樹,并對(duì)其進(jìn)行編碼,將源文件的字符用其HuffMan編碼代替,組合成滿字節(jié)寫入壓縮文件?!驹敿?xì)設(shè)計(jì)表示】 變 量 數(shù)據(jù)類型 Maxsize int *Key input_char KeyNum int *Huffman_node huffmantree 成員函數(shù)說明: char_judge 功能:判斷字符出現(xiàn)的函數(shù); 原型:bool char_judge(char c);//判斷字符出現(xiàn)的函數(shù); 返回類型:bool型 參數(shù):c char型 [in] char_add 功能:添加新出現(xiàn)字符的函數(shù); 原型:void char_add(char c);返回類型:無 參數(shù):c char型 [in] CreateHuffTree 功能:創(chuàng)建哈夫曼樹 原型:void CreateHuffTree();返回類型:無 參數(shù):無 CreateHuffCode 功能:創(chuàng)建哈夫曼編碼 原型:void CreateHuffCode();返回類型:無 參數(shù):無 其它函數(shù)說明: ArrayOpp 功能:將一個(gè)字符數(shù)組中的1 字符順序顛倒 原型:void ArrayOpp(char a[],int n)返回類型:無 參數(shù):數(shù)組 a char型 [in&out] n int型 CompressFile 功能:壓縮文件 原型:void CompressFile(FILE *ifp,FILE *ofp);//壓縮 返回類型:無 參數(shù):指針ifp FILE型 [in&out] 指針ofp FILE型 [in&out] DecompressionFile 功能:解壓文件 原型:void DecompressionFile(FILE *ifp,FILE *ofp);//解壓 返回類型:無 參數(shù):指針ifp FILE型 [in&out] 指針ofp FILE型 [in&out] FindMax 功能:尋找數(shù)組中最大元素下標(biāo) 原型:void FindMax(int index[],int n,int &flag);//尋找數(shù)組中最大元素下標(biāo) 返回類型:無 參數(shù):數(shù)組index int型 [in&out] n 數(shù)組長(zhǎng)度 [in] flag int型 [in&out] 3. 編碼 【遇到的問題及解決方法】(1)選取合適的數(shù)據(jù)結(jié)構(gòu) 對(duì)于一個(gè)工程的實(shí)現(xiàn),到底采用怎樣的數(shù)據(jù)結(jié)構(gòu),應(yīng)該考慮到程序的性能和代碼的可讀性。由于起初對(duì)工程的不熟,對(duì)于用什么樣的數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)我一直都處在試探中,缺乏一種長(zhǎng)久的考慮,這也使得后面的編碼過程效率不高。最終冷靜下來,自定義了一個(gè)文件類和兩個(gè)輔助結(jié)構(gòu)體,大體的實(shí)現(xiàn)框架在總體設(shè)計(jì)中已給出。 (2)哈夫曼樹該如何建立 首先,字符的頻率作為關(guān)鍵值,用一個(gè)循環(huán),每次找出關(guān)鍵值最小的兩個(gè)字符,將其組合加入到哈夫曼樹中,同時(shí)將每個(gè)哈夫曼樹節(jié)點(diǎn)用結(jié)構(gòu)體huffman_node數(shù)組存放,每個(gè)節(jié)點(diǎn)都有其左右孩子和父節(jié)點(diǎn)的下標(biāo),這有便于后面的哈夫曼編碼。(3)哈夫曼編碼的具體實(shí)現(xiàn) 哈夫曼編碼的具體實(shí)現(xiàn)方法:由于哈夫曼樹的建立過程中為每個(gè)哈夫曼節(jié)點(diǎn)標(biāo)明了左右孩子和父節(jié)點(diǎn),可以從關(guān)鍵值開始,從下往上通過父節(jié)點(diǎn)與子節(jié)點(diǎn)的關(guān)系為子節(jié)點(diǎn)進(jìn)行編碼,如果父節(jié)點(diǎn)的左孩子是當(dāng)前子節(jié)點(diǎn),則子節(jié)點(diǎn)(含關(guān)鍵值)的哈夫曼編碼標(biāo)為0否則標(biāo)為1,如此循環(huán)下去。這樣得到每個(gè)葉節(jié)點(diǎn)對(duì)應(yīng)的哈夫曼編碼的逆序表示,且存放在數(shù)組bits中。然后用一個(gè)函數(shù)ArrayOpp將其逆序過來,從而真正得到哈夫曼編碼。(4)文件的二進(jìn)制形式讀寫操作及其壓縮的實(shí)現(xiàn) 最主要的還是怎樣實(shí)現(xiàn)文件的壓縮,由于壓縮文件中的字符是用其相應(yīng)的哈夫曼編碼代替的,如果只是把字符的哈夫曼編碼(也使字符型的數(shù)組存放的)寫入,將會(huì)適得其反,只有將相鄰字符的編碼組合成一個(gè)一個(gè)的字節(jié)數(shù)字寫入才能達(dá)到節(jié)省空間的效果,例如:某字符哈夫曼編碼為bits 1 1 1 1 1 1 1 這字符數(shù)組內(nèi)容通過移位可轉(zhuǎn)化為char型數(shù)128,如果滿一個(gè)字節(jié)就寫入,若未滿則繼續(xù)組合。 4.程序及算法分析 【壓縮】 1、先整體掃描文本,統(tǒng)計(jì)文本的字符個(gè)數(shù),種類,以及頻率記錄下來。 2、根據(jù)字符的頻率生成相應(yīng)的huffman樹,生成huffman樹之后再根據(jù)樹的結(jié)構(gòu)生成huffman編碼。 3、生成壓縮文件,文件頭部分寫入待壓縮文件的字符個(gè)數(shù),字符種類以及相應(yīng)的頻率,分別用int型,char型數(shù)組以及int型數(shù)組寫入。 4、寫入帶壓縮文件中每個(gè)字符對(duì)應(yīng)的huffman編碼,按位寫入。 按位寫入采用移位思想,滿8位一寫。如源文件中一段字符“ABC”,A的huffman編碼為001,B的huffman編碼為010,C的為11,剛好滿8位。則定義一個(gè)unsigned char型變量如c_out(初值為0),用移位將c_out賦值使其機(jī)器編碼為00101011,剛好8位,再將其作為一個(gè)字符寫入壓縮文件中,直至將帶壓縮文件的最后一個(gè)字符寫滿。要注意的是:若帶壓縮文件最后一個(gè)字符的huffman編碼賦值給c_out后c_out不滿8位,則將c_out的其余位都補(bǔ)0。 【解壓】 1、讀壓縮文件的頭部分,定義幾個(gè)變量記錄字符個(gè)數(shù),種類以及對(duì)應(yīng)的頻率。 2、根據(jù)字符種類及頻率生成huffman樹。 3.繼續(xù)循環(huán)讀壓縮文件每次讀一個(gè)字符,每讀一個(gè)字符根據(jù)其8位機(jī)器碼來遍歷huffman樹,當(dāng)遇到huffman樹的葉子節(jié)點(diǎn)時(shí)終止,將葉子節(jié)點(diǎn)的字符寫入解壓后的新文件中。當(dāng)讀完最后一個(gè)字符后終止循環(huán)。 解壓正文時(shí)每讀一個(gè)字符,利用移位將該字符的8位機(jī)器碼取出存入鏈表中,方便huffman樹的遍歷?!痉治觥?/p> 主要的程序集中在兩個(gè)函數(shù)中:CompressFile和DecompressionFile考慮到程序的性能,在對(duì)文件的讀寫過程中,我選擇在內(nèi)存中對(duì)文件進(jìn)行操作,在壓縮時(shí),將待壓縮文件一次性讀入內(nèi)存,在解壓文件時(shí),將待解壓文件一次性讀入內(nèi)存,而不是一個(gè)字節(jié)一個(gè)字節(jié)地讀寫文件。 5.小結(jié) 通過這次課題實(shí)驗(yàn)的程序?qū)嵺`,我實(shí)在獲益匪淺!數(shù)據(jù)結(jié)構(gòu)是上個(gè)學(xué)期開展的一門學(xué)科,學(xué)習(xí)這門學(xué)科也是艱辛的,因?yàn)樗容^難懂,但是這門學(xué)科是非常重要的,在以后的程序設(shè)計(jì)方面這門學(xué)科能給我們很大的幫助。 這次的程序設(shè)計(jì)對(duì)我來說無疑是一個(gè)具大的考驗(yàn),從接起課題后,我就一直為實(shí)現(xiàn)程序而努力,翻閱相關(guān)書籍、在網(wǎng)上查找資料。因?yàn)檎n本上的基礎(chǔ)知識(shí)掌握不好,過程中遇到了不少的阻礙,編寫程序的進(jìn)度也比較慢。雖然如此,但是通過自己的努力與老師的指導(dǎo),我對(duì)這次實(shí)驗(yàn)的原理有了一定的理解,通過參照從網(wǎng)上找到的源程序,終于在其它源程序的基礎(chǔ)下寫出了本次實(shí)驗(yàn)的核心算法,并使其能夠正常的運(yùn)行。 近兩周的程序設(shè)計(jì),讓我體會(huì)到了作為一個(gè)編程人員的艱難,一個(gè)算法到具體實(shí)現(xiàn),再到應(yīng)用層面的開發(fā)是需要有一段較長(zhǎng)的路要走的,不是一朝一夕就可以實(shí)現(xiàn)的,而且在編好程序后,編程人員還要花很多的時(shí)間去完善它,其中包含的心酸,外人是不會(huì)明白的。 這次課程設(shè)計(jì)涉及對(duì)大量數(shù)據(jù)的處理,要做到精益求精,不能忽略任何一處,否則結(jié)果將會(huì)有很大的不同,總之,最大的感受就是完美源于細(xì)節(jié)!編程不僅要有一定的理論基礎(chǔ)和實(shí)踐經(jīng)驗(yàn),還需要一定的毅力和關(guān)注細(xì)節(jié)的習(xí)慣。這次對(duì)文件的壓縮和解壓的實(shí)習(xí),使我的調(diào)試有了進(jìn)一步的提高。同時(shí)也使我在編程中對(duì)文件的存儲(chǔ)形式的采取有了一定的了解。希望在以后的實(shí)習(xí)中,我會(huì)有有進(jìn)一步的提高。 6.附錄 【部分核心代碼】 void CompressFile(FILE *ifp,FILE *ofp){ if(!ifp){ cout<<“InPutFile cannot be opened!”< fseek(ifp, 0, SEEK_END);//定位到文件結(jié)尾處 int orignflen = ftell(ifp);char *orignfile=new char [orignflen+1];fseek(ifp,0,SEEK_SET);//定位到文件起始處 fread(orignfile,1,orignflen,ifp);//將文件內(nèi)容一次性讀到內(nèi)存中 orignfile[orignflen]=0; C_file file(512);char c;for(int i=0;i c=orignfile[i]; if(!file.char_judge(c))//對(duì)原文件字符進(jìn)行判斷和統(tǒng)計(jì) file.char_add(c);} for(int i=1;i cout< } file.CreateHuffTree();//創(chuàng)建HuffMan樹 file.CreateHuffCode();//創(chuàng)建HuffMan編碼 //*******************************************************************// //寫入文件信息 fseek(ifp,0,SEEK_SET);fwrite(&orignflen,sizeof(int),1,ofp);fwrite(&file.MaxSize,sizeof(int),1,ofp);fwrite(&file.KeyNum,sizeof(int),1,ofp);for(int i=1;i fwrite(&file.Key[i].data,sizeof(char),1,ofp); fwrite(&file.Key[i].count,sizeof(int),1,ofp);} //*******************************************************************// unsigned char o_c=0;//o_c中存入二進(jìn)制的位數(shù) int bitnum=0; char x; for(int k=0;k c=orignfile[k];//從內(nèi)存中取出源文件內(nèi)容 for(int i=1;i {//在文件類對(duì)象中檢索出相應(yīng)的關(guān)鍵碼 if (c!=file.Key[i].data)continue; else {//將哈夫曼編碼組合成char型數(shù)字 for(int j=0;j { if(bitnum==8) {//若滿8位則構(gòu)成一字節(jié)寫入 fwrite(&o_c,1,1,ofp); bitnum=0; o_c=0; } x=file.huffman_node[i].bits[j]; if(x=='1')o_c=(o_c<<1)+1; else o_c=o_c<<1; bitnum++; } break; } } } while(bitnum<8)//最后一個(gè)字節(jié)未寫滿則補(bǔ) { o_c=o_c<<1; bitnum++;} fwrite(&o_c,1,1,ofp);//將最后一個(gè)字節(jié)寫入文件 fclose(ifp);fclose(ofp);cout<<“Already Compressed!”< } void FindMax(int index[],int n,int &flag){//找出數(shù)組中最大值的下標(biāo) 由flag返回 for(int i=1;i<=n;i++){ if(index[i]>=index[i+1]) { flag=i; } else flag=i+1;} } void DecompressionFile(FILE *ifp,FILE *ofp){ unsigned char i_c=' ';char o_c=' '; //**************************************************************// //讀取壓縮文件信息 fseek(ifp,0,SEEK_SET);int orignflen=0;int MaxSize=0;int KeyNum=0; fread(&orignflen,sizeof(int),1,ifp); char *depressfile;depressfile=new char[orignflen+1]; fread(&MaxSize,sizeof(int),1,ifp); C_file file(MaxSize); fread(&file.KeyNum,sizeof(int),1,ifp); for(int i=1;i fread(&file.Key[i].data,sizeof(char),1,ifp); fread(&file.Key[i].count,sizeof(int),1,ifp);} //**************************************************************// //重構(gòu)HuffMan樹和編碼 file.CreateHuffTree();file.CreateHuffCode(); fseek(ifp, 12+((file.KeyNum-1)*5), SEEK_END); long flen = ftell(ifp);char *compressfile=new char [flen+1]; fseek(ifp,0,SEEK_SET);fseek(ifp, 12+((file.KeyNum-1)*5), SEEK_SET); char t_buff[255],z_buff[255];t_buff[0]=0;z_buff[0]=0; //獲取最長(zhǎng)編碼的長(zhǎng)度 int *index;index=new int [file.KeyNum-1];int flag=0;for(int i=1;i index[i]=file.huffman_node[i].count;} FindMax(index,file.KeyNum-1,flag); int p=file.huffman_node[flag].count;int curr_index=0;int l=0;while(true){ int i; while(strlen(z_buff) {//保證能夠取到最長(zhǎng)編碼的全部?jī)?nèi)容 fread(&i_c,1,1,ifp); itoa(i_c,t_buff,2);//將讀取的一個(gè)(字符型)字節(jié)的內(nèi)容轉(zhuǎn)換為char型字符數(shù)組 strcat(z_buff,t_buff); 【參考資料】 } for(i=1;i if(memcmp(file.huffman_nod e[i].bits,z_buff,file.huffman_node[i].count)==0) break; } strcpy(z_buff,z_buff+file.huffman_node[i].count); //獲得目標(biāo)字符并存入目標(biāo)數(shù)組 o_c=file.Key[i].data; depressfile[l++]=o_c; if(l==orignflen) { break; } } fseek(ofp,0,SEEK_SET); fwrite(depressfile,1,l,ofp);//將解壓后的文件一次性地寫入文件 fclose(ifp);fclose(ofp);cout<<“Already DeCompressed!”< } 《數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++語言描述)》 殷人昆 等編著,清華大學(xué)出版社 《數(shù)據(jù)結(jié)構(gòu)題集》嚴(yán)蔚敏,吳偉民 編著,清華大學(xué)出版社 《數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法》嚴(yán)蔚敏,陳文博 編著,清華大學(xué)出版社 中國(guó)地質(zhì)大學(xué)(武漢)位于武漢東湖國(guó)家自主創(chuàng)新示范區(qū)腹地,東湖之畔,南望山麓,占地1700余畝。學(xué)校擁有國(guó)家4A級(jí)旅游景區(qū)——逸夫博物館,是全國(guó)文明單位、湖北省最佳文明單位。校園環(huán)境優(yōu)美,教育、科研、學(xué)術(shù)氛圍濃厚,擁有現(xiàn)代化的教學(xué)樓群、圖書館、學(xué)生公寓和近萬臺(tái)隨時(shí)上網(wǎng)的計(jì)算機(jī)等相關(guān)配套設(shè)施,為莘莘學(xué)子提供了良好的學(xué)習(xí)、生活和成長(zhǎng)的環(huán)境。 辦學(xué)思想 學(xué)校以溫家寶總理為母校的題詞“艱苦樸素,求真務(wù)實(shí)”作為校訓(xùn)。在總結(jié)辦學(xué)經(jīng)驗(yàn)、展望未來發(fā)展趨勢(shì)的基礎(chǔ)上,提出了“三步走”發(fā)展戰(zhàn)略,其中將“建設(shè)地球科學(xué)一流、多學(xué)科協(xié)調(diào)發(fā)展的高水平大學(xué)”確立為辦學(xué)的階段性目標(biāo),將“建設(shè)地球科學(xué)領(lǐng)域世界一流大學(xué)”確立為辦學(xué)的長(zhǎng)遠(yuǎn)目標(biāo)。學(xué)校堅(jiān)持突出辦學(xué)特色,完善學(xué)科體系,努力為解決我國(guó)和人類社會(huì)面臨的資源環(huán)境問題提供高水平的人才和科技支撐。辦學(xué)條件 學(xué)校現(xiàn)有教職員工3195人,其中,中國(guó)科學(xué)院院士8人,博士生導(dǎo)師183人,教授420人,副教授497人,俄羅斯自然科學(xué)院外籍院士5人,俄羅斯工程院外籍院士5人。國(guó)家“千人計(jì)劃”入選4人,“長(zhǎng)江學(xué)者獎(jiǎng)勵(lì)計(jì)劃”特聘教授8人,國(guó)家杰出青年科學(xué)基金獲得者9人,“楚天學(xué)者計(jì)劃”入選教授29人。近年來,學(xué)校新增國(guó)家創(chuàng)新研究群體2個(gè),教育部創(chuàng)新團(tuán)隊(duì)3個(gè),國(guó)家級(jí)教學(xué)團(tuán)隊(duì)4個(gè),國(guó)家級(jí)教學(xué)名師1人,湖北省教學(xué)名師7人。2008年,我校成秋明教授繼我校趙鵬大院士之后,成為榮獲國(guó)際數(shù)學(xué)地質(zhì)學(xué)會(huì)最高獎(jiǎng)——克倫賓獎(jiǎng)的第二個(gè)亞洲人。 學(xué)?,F(xiàn)有各類科研機(jī)構(gòu)、實(shí)驗(yàn)室、研究院(所、中心)86個(gè),其中國(guó)家重點(diǎn)實(shí)驗(yàn)室2個(gè),國(guó)家地方聯(lián)合工程實(shí)驗(yàn)室1個(gè),省部級(jí)重點(diǎn)實(shí)驗(yàn)室、工程中心、人文社科研究基地15個(gè)。學(xué)校圖書館擁有豐富的文獻(xiàn)資源,形成了以科技文獻(xiàn)為主體、地球科學(xué)類文獻(xiàn)為特色的館藏體系。學(xué)校擁有紙質(zhì)圖書資料170.46萬冊(cè),電子圖書7000GB,期刊1500余種,中外文數(shù)據(jù)庫(kù)20個(gè)。從20世紀(jì)50年代起,學(xué)校相繼在周口店、北戴河、三峽等地建立了教學(xué)實(shí)習(xí)基地。其中周口店野外實(shí)習(xí)基地被譽(yù)為“地質(zhì)工程師的搖籃”,已建成為“全國(guó)地質(zhì)實(shí)驗(yàn)(實(shí)踐)教學(xué)示范中心”和“國(guó)家基礎(chǔ)學(xué)科人才培養(yǎng)能力(野外實(shí)踐)基地”;依托三峽秭歸實(shí)習(xí)基地建設(shè)了教育部長(zhǎng)江三峽庫(kù)區(qū)地質(zhì)災(zāi)害研究中心,其影響輻射全國(guó)。 學(xué)科布局 學(xué)校大力構(gòu)建以地球系統(tǒng)科學(xué)為主導(dǎo)的學(xué)科體系,積極發(fā)展應(yīng)用科學(xué)、前沿科學(xué),以及與社會(huì)經(jīng)濟(jì)發(fā)展密切相關(guān)的信息、納米、材料、生物、能源、環(huán)保等新興交叉學(xué)科。學(xué)?,F(xiàn)有8個(gè)國(guó)家級(jí)重點(diǎn)學(xué)科和17個(gè)省部級(jí)重點(diǎn)學(xué)科,其中“地質(zhì)資源與地質(zhì)工程”與“地質(zhì)學(xué)”2個(gè)一級(jí)學(xué)科全國(guó)排名第一;有17個(gè)學(xué)院(課部)、60個(gè)本科專業(yè);擁有國(guó)家地質(zhì)學(xué)理科人才培養(yǎng)基地和國(guó)土資源部地質(zhì)工科人才培養(yǎng)基地;擁有9個(gè)博士后科研流動(dòng)站,13個(gè)一級(jí)學(xué)科博士點(diǎn)和38個(gè)一級(jí)學(xué)科碩士點(diǎn);有工程碩士、MBA、MPA、MFA、J.M等10個(gè)專業(yè)學(xué)位授予權(quán),其中工程碩士專業(yè)包涵19個(gè)工程領(lǐng)域。 人才培養(yǎng) 學(xué)校擁有“學(xué)士-碩士-博士”完整的人才培養(yǎng)體系,有學(xué)生6.4萬余人,其中全日制在校學(xué)生近2.5萬人,非全日制專業(yè)學(xué)位研究生2800余人,成教及網(wǎng)絡(luò)教育注冊(cè)學(xué)生3.9萬余人,各類留學(xué)生400余人。學(xué)校通過強(qiáng)化教學(xué)管理,深化教學(xué)改革,加大與國(guó)外高校聯(lián)合培養(yǎng)的力度,創(chuàng)新推薦免試攻讀碩士、博士學(xué)位研究生的機(jī)制,建立了創(chuàng)新人才和特殊人才的培養(yǎng)制度。學(xué)校已建成一大批國(guó)家級(jí)和省級(jí)精品課程,2004年學(xué)校以優(yōu)異的成績(jī)通過了教育部本科教學(xué)工作水平評(píng)估和湖北省研究生培養(yǎng)條件評(píng)估。學(xué)校與中國(guó)科學(xué)院9家科研院所、中國(guó)地質(zhì)科學(xué)院組建了“科教戰(zhàn)略聯(lián)盟”,開展深度合作,聯(lián)合培養(yǎng)本科生和研究生。學(xué)校設(shè)立了“李四光學(xué)院”和地球科學(xué)“菁英班”,致力于培養(yǎng)地學(xué)類拔尖創(chuàng)新人才。學(xué)校建立了國(guó)內(nèi)一流的現(xiàn)代遠(yuǎn)程教育體系,廣泛適應(yīng)各類學(xué)生多元化、個(gè)性化的學(xué)習(xí)需求,學(xué)校遠(yuǎn)程繼續(xù)教育學(xué)院連續(xù)多年在教育總評(píng)榜中被評(píng)為“十佳網(wǎng)絡(luò)教育學(xué)院”。 學(xué)校按照“品德高尚、基礎(chǔ)厚實(shí)、專業(yè)精深、知行合一”的人才培養(yǎng)要求,全面實(shí)施教育教學(xué)質(zhì)量工程,啟動(dòng)了“卓越工程師教育培養(yǎng)計(jì)劃”、國(guó)家大學(xué)生創(chuàng)新性實(shí)驗(yàn)計(jì)劃、“李四光計(jì)劃”、“池際尚計(jì)劃”等。我校學(xué)生在具有廣泛影響力的全國(guó)挑戰(zhàn)杯大賽、數(shù)學(xué)建模大賽、電子設(shè)計(jì)大賽等高水平賽事中屢獲佳績(jī)。學(xué)校通過國(guó)家助學(xué)貸款政策每年為學(xué)生貸款達(dá)2000余萬元,國(guó)家、學(xué)校、社會(huì)每年為我校學(xué)生提供的獎(jiǎng)勵(lì)資助金額達(dá)2500萬元。學(xué)校除設(shè)立學(xué)生普遍享有的獎(jiǎng)學(xué)金外,還設(shè)立了“地質(zhì)之光獎(jiǎng)學(xué)金”在內(nèi)的50余項(xiàng)專項(xiàng)獎(jiǎng)學(xué)金。 學(xué)校把弘揚(yáng)優(yōu)良體育傳統(tǒng)與開展艱苦奮斗教育相結(jié)合,逐步形成了特色鮮明的體育體系。我校學(xué)生在國(guó)際國(guó)內(nèi)重大體育比賽中,累計(jì)取得金牌150余枚,銀銅牌350余枚,連續(xù)5屆獲得全國(guó)大學(xué)生運(yùn)動(dòng)會(huì)“校長(zhǎng)杯”。2006年10月,學(xué)校成功舉辦第九屆世界大學(xué)生羽毛球錦標(biāo)賽。2012年5月,學(xué)校登山隊(duì)成功登頂珠峰,成為我國(guó)第一支登上世界最高峰的大學(xué)登山隊(duì)。 科學(xué)研究 學(xué)校歷來十分重視科技工作。近5年,學(xué)校主持“973”項(xiàng)目及專題、“863”項(xiàng)目及子課題、國(guó)家自然科學(xué)基金和社會(huì)科學(xué)基金項(xiàng)目等各類國(guó)家級(jí)項(xiàng)目600余項(xiàng),科研經(jīng)費(fèi)穩(wěn)步增長(zhǎng)。殷鴻福院士主持完成的確定全球二疊系-三疊系界線層型“金釘子”(國(guó)際標(biāo)準(zhǔn))的科技成果榮獲“2001年中國(guó)基礎(chǔ)研究十大進(jìn)展”、“2001中國(guó)高等學(xué)校十大科技進(jìn)展”和“2001年中國(guó)十大科技新聞”的殊榮。我校師生以第一作者身份在國(guó)際雜志Nature上發(fā)表論文4篇。5年來,學(xué)校共有50項(xiàng)科研成果獲得省部級(jí)以上科技獎(jiǎng)勵(lì),其中,國(guó)家科技進(jìn)步特等獎(jiǎng)1項(xiàng),國(guó)家自然科學(xué)二等獎(jiǎng)2項(xiàng),國(guó)家科技進(jìn)步二等獎(jiǎng)4項(xiàng)。學(xué)校主辦的《地球科學(xué)》中文版被國(guó)際著名檢索系統(tǒng)EI光盤版收錄,英文版被國(guó)際著名檢索系統(tǒng)SCIE收錄,學(xué)報(bào)(社會(huì)科學(xué)版)進(jìn)入《中文核心期刊要目總攬》和CSSCI。 學(xué)??茖W(xué)研究始終面向國(guó)民經(jīng)濟(jì)建設(shè)主戰(zhàn)場(chǎng),服務(wù)經(jīng)濟(jì)社會(huì)發(fā)展,積極參與找礦突破戰(zhàn)略行動(dòng),引領(lǐng)行業(yè)科技發(fā)展,培養(yǎng)和輸送技術(shù)骨干和管理人才。學(xué)校作為唯一高校參與了中國(guó)大陸科學(xué)鉆探工程,擁有軍工項(xiàng)目科研生產(chǎn)完整資質(zhì),成立了2個(gè)“教育部深空探測(cè)聯(lián)合研究中心”預(yù)研分中心,參與了“嫦娥工程”月球探測(cè)數(shù)據(jù)處理和月球應(yīng)用研究,自主研發(fā)的MAPGIS軟件成功應(yīng)用于“神舟”系列載人航天搜救。學(xué)校堅(jiān)持開展產(chǎn)學(xué)研合作,推進(jìn)協(xié)同創(chuàng)新體系建設(shè)。2008年汶川大地震發(fā)生之后,學(xué)校及時(shí)組織科技賑災(zāi)專家組奔赴災(zāi)區(qū),為災(zāi)區(qū)預(yù)防次生災(zāi)害、做好災(zāi)后重建與城鎮(zhèn)選址等工作提供了技術(shù)支持。 國(guó)際交流 學(xué)校積極開展對(duì)外學(xué)術(shù)、科技和文化交流,先后與美國(guó)、法國(guó)、澳大利亞、俄羅斯等國(guó)家的100多所大學(xué)簽訂了友好合作協(xié)議。近年來,學(xué)校公派出國(guó)訪問、留學(xué),攻讀碩士、博士學(xué)位的師生每年超過350人次,邀請(qǐng)來校訪問、講學(xué)、與會(huì)的境外專家每年超過300人次。學(xué)校2個(gè)項(xiàng)目被列入“高等學(xué)校學(xué)科創(chuàng)新引智計(jì)劃”(即“111工程”),以我校為支撐建立了美國(guó)布萊恩特大學(xué)孔子學(xué)院、美國(guó)阿爾弗萊德大學(xué)孔子學(xué)院、保加利亞大特爾諾沃大學(xué)孔子學(xué)院,建成了“中匈聯(lián)合環(huán)境科學(xué)與健康實(shí)驗(yàn)室”和“中美聯(lián)合非開挖工程研究中心”。 桃李芬芳 60年來,學(xué)校人才輩出。畢業(yè)生中走出了以溫家寶總理為代表的一大批社會(huì)管理精英,成長(zhǎng)了以“嫦娥工程”首席科學(xué)家歐陽自遠(yuǎn)等為代表的29位兩院院士,涌現(xiàn)了國(guó)家體育場(chǎng)館“鳥巢”總工程師李久林為代表的一大批工程奇才……廣大畢業(yè)生正以自身的努力為學(xué)校贏得榮譽(yù)、提供支持。同時(shí),學(xué)校也將為解決經(jīng)濟(jì)社會(huì)可持續(xù)發(fā)展問題,謀求人類與地球的和諧發(fā)展做出更加卓越的貢獻(xiàn)!第三篇:中國(guó)地質(zhì)大學(xué)數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告
第四篇:數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告(中國(guó)地質(zhì)大學(xué))
第五篇:中國(guó)地質(zhì)大學(xué)(武漢)