哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
《哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(23頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 《 數(shù)據(jù)結(jié)構(gòu) 》課程設(shè)計(jì) ——赫夫曼編碼/譯碼器設(shè)計(jì) 指導(dǎo)教師:孫樹(shù)森、周維達(dá) 班級(jí):09數(shù)媒(2)班 學(xué)號(hào):E09700203 姓名:林真超 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 一、題目: 赫夫曼編碼/譯碼器設(shè)計(jì) 二、目的: 1、提高分析問(wèn)題、解決問(wèn)題的能力,進(jìn)一步鞏固數(shù)據(jù)結(jié)構(gòu)各種原理與方法。 2、熟悉掌握一門計(jì)算機(jī)語(yǔ)言,可以進(jìn)行數(shù)據(jù)算法的設(shè)計(jì)。 三、要求 3.1總體要求 1、要充分認(rèn)識(shí)課程設(shè)計(jì)對(duì)培養(yǎng)自己的重要性,認(rèn)真做好設(shè)計(jì)前的各項(xiàng)準(zhǔn)備工作。尤其是對(duì)編程軟件的使用有基本的認(rèn)識(shí)。 2、既要虛心接受老師的指導(dǎo),又要
2、充分發(fā)揮主觀能動(dòng)性。結(jié)合課題,獨(dú)立思考,努力鉆研,勤于實(shí)踐,勇于創(chuàng)新。 3、獨(dú)立按時(shí)完成規(guī)定的工作任務(wù),不得弄虛作假,不準(zhǔn)抄襲他人內(nèi)容,否則成績(jī)以不及格計(jì)。 4、在設(shè)計(jì)過(guò)程中,要嚴(yán)格要求自己,樹(shù)立嚴(yán)肅、嚴(yán)密、嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,必須按時(shí)、按質(zhì)、按量完成課程設(shè)計(jì)。 3.2實(shí)施要求 1、理解赫夫曼編碼/譯碼的確切意義。 2、獨(dú)立進(jìn)行方案的制定,系統(tǒng)結(jié)構(gòu)設(shè)計(jì)要合理。 3、在程序開(kāi)發(fā)時(shí),則必須清楚主要實(shí)現(xiàn)函數(shù)的目的和作用,需要在程序書(shū)寫(xiě)時(shí)說(shuō)明做適當(dāng)?shù)淖⑨?。在?xiě)課設(shè)報(bào)告時(shí),必須要將主要函數(shù)的功能和參數(shù)做詳細(xì)的說(shuō)明。 4、通過(guò)多組數(shù)據(jù)來(lái)檢測(cè)該系統(tǒng)的穩(wěn)定性和正確性。 3.3 課程設(shè)計(jì)報(bào)告的內(nèi)容及
3、要求 在完成課題驗(yàn)收后,學(xué)生應(yīng)在規(guī)定的時(shí)間內(nèi)完成課程設(shè)計(jì)報(bào)告一份(不少于2000字)。 1 一、實(shí)驗(yàn)?zāi)康? 1. 進(jìn)一步掌握最優(yōu)二叉樹(shù)的含義。 2. 掌握最優(yōu)二叉樹(shù)的結(jié)構(gòu)特征,以及各種存儲(chǔ)結(jié)構(gòu)的特點(diǎn)及使用范圍。 3. 熟練掌握哈夫曼樹(shù)的建立和哈夫曼編碼方法。 4. 掌握用指針類型描述、訪問(wèn)和處理運(yùn)算。 二、實(shí)驗(yàn)原理 哈夫曼(Huffman)編碼屬于碼詞長(zhǎng)度可變的編碼類,是哈夫曼在1952年提出的一種編碼方法,即從下到上的編碼方法。同其他碼詞長(zhǎng)度可變的編碼一樣,可區(qū)別的不同碼詞的生成是基于不同符號(hào)出現(xiàn)的不同概率。生成哈夫曼編碼算法基于一種稱為“編碼樹(shù)”(coding
4、 tree)的技術(shù)。算法步驟如下: (1)初始化,根據(jù)符號(hào)概率的大小按由大到小順序?qū)Ψ?hào)進(jìn)行排序。 (2)把概率最小的兩個(gè)符號(hào)組成一個(gè)新符號(hào)(節(jié)點(diǎn)),即新符號(hào)的概率等于這兩個(gè)符號(hào)概率之和。 (3)重復(fù)第2步,直到形成一個(gè)符號(hào)為止(樹(shù)),其概率最后等于1。 (4)從編碼樹(shù)的根開(kāi)始回溯到原始的符號(hào),并將每一下分枝賦值為1,上分枝賦值為0。 譯碼的過(guò)程是分解電文中字符串,從根出發(fā),按字符“0”或“1”確定找做孩子或右孩子,直至葉子節(jié)點(diǎn),便求得該子串相應(yīng)的字符。 三、實(shí)驗(yàn)內(nèi)容 (一)需求分析 一個(gè)完整的系統(tǒng)應(yīng)具有以下功能: (1) I:初始化。從終端讀入字符集大小n,以及n個(gè)
5、字符和n個(gè)權(quán)值,建立哈夫曼樹(shù),并將它存于文件hfmTree中。 (2) E:編碼。利用已建好的哈夫曼樹(shù),對(duì)文件ToBeTran中的正文進(jìn)行編碼,然后將結(jié)果存入文件CodeFile中。 (3) D:譯碼。利用已建好的哈夫曼樹(shù)將文件CodeFile中的代碼進(jìn)行譯碼,結(jié)果存入文件Textfile中。 (4) P:印代碼文件(Print).將文件CodeFile以緊湊格式顯示在終端上,每行50個(gè)代碼。同時(shí)將此字符形式的編碼文件寫(xiě)入文件CodePrin中。 (5) T:印哈夫曼樹(shù)(Treeprinting).將已在內(nèi)存中的哈夫曼樹(shù)以直觀的方式(比如樹(shù))顯示在終端上,同時(shí)將此字符形式的哈夫曼樹(shù)寫(xiě)入
6、文件TreePrint 中。 (二)實(shí)驗(yàn)步驟 1.定義結(jié)點(diǎn)結(jié)構(gòu),定義哈夫曼樹(shù)結(jié)構(gòu); 2.初始化哈夫曼樹(shù),存儲(chǔ)哈夫曼樹(shù)信息; 3.定義求哈夫曼編碼的函數(shù); 4.定義譯哈夫曼編碼的函數(shù); 5.寫(xiě)出主函數(shù)。 6.測(cè)試系統(tǒng)。 (三)概要設(shè)計(jì) 1 設(shè)計(jì)思想 赫夫曼樹(shù)用鄰接矩陣作為存儲(chǔ)結(jié)構(gòu),借助靜態(tài)鏈表來(lái)實(shí)現(xiàn)遍歷。 2 函數(shù)間的關(guān)系 函數(shù)間的關(guān)系如圖所示: 主函數(shù) 顯示表頭 初始化樹(shù) 輸入字符 編碼 譯碼 打印編碼 打印赫夫曼樹(shù) 選最小兩個(gè)權(quán)值 Select() 圖3.1 函數(shù)間的關(guān)系 3 數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì) 赫夫曼編\譯碼器的主要功能是先建立赫夫
7、曼樹(shù),然后利用建好的赫夫曼樹(shù)生成赫夫曼編碼后進(jìn)行譯碼 。 在數(shù)據(jù)通信中,經(jīng)常需要將傳送的文字轉(zhuǎn)換成由二進(jìn)制字符0、1組成的二進(jìn)制串,稱之為編碼。構(gòu)造一棵赫夫曼樹(shù),規(guī)定赫夫曼樹(shù)中的左分之代表0,右分支代表1,則從根節(jié)點(diǎn)到每個(gè)葉子節(jié)點(diǎn)所經(jīng)過(guò)的路徑分支組成的0和1的序列便為該節(jié)點(diǎn)對(duì)應(yīng)字符的編碼,稱之為赫夫曼編碼。 最簡(jiǎn)單的二進(jìn)制編碼方式是等長(zhǎng)編碼。若采用不等長(zhǎng)編碼,讓出現(xiàn)頻率高的字符具有較短的編碼,讓出現(xiàn)頻率低的字符具有較長(zhǎng)的編碼,這樣可能縮短傳送電文的總長(zhǎng)度。赫夫曼樹(shù)課用于構(gòu)造使電文的編碼總長(zhǎng)最短的編碼方案。 其主要流程圖如圖3.2所示。 開(kāi)始 結(jié)點(diǎn)數(shù)是否大于1 將data和權(quán)值賦
8、給ht 輸出根結(jié)點(diǎn)和權(quán)值 調(diào)用SELECT函數(shù) 計(jì)算根結(jié)點(diǎn)函數(shù) 父結(jié)點(diǎn)為兩子結(jié)點(diǎn)之和 輸出兩子結(jié)點(diǎn)和已構(gòu)造的結(jié)點(diǎn) 是否為根結(jié)點(diǎn)? 左子是否為空? 此時(shí)編碼為0 I<2*N? I++ 編碼為1 結(jié)束 否 否 否 右子是否為空 是 是 否 否 是 是 是 圖3.2 赫夫曼樹(shù)編\譯碼器流程圖 4.功能函數(shù)模塊劃分 void main() void printhead() void printree(HuffmanTree HT,int w) //打印赫夫曼樹(shù) void coprint(HuffmanTree start,HuffmanTr
9、ee HT)//打印代碼文件 void printcode() //打印代碼 void decode() //完成譯碼功能 void encode() //完成編碼功能 void inputcode() void init() void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n) void select(HuffmanTree t,int i,int &s1,int &s2) int min(HuffmanTree t,int i)//找兩個(gè)最小的權(quán)
10、值 (四)詳細(xì)設(shè)計(jì) (1)哈夫曼編碼:首先定義函數(shù),找出全部權(quán)值中最小的兩個(gè),然后定義一個(gè)變量,使他始終成為最小的那個(gè)。再將兩個(gè)函數(shù)最為葉子結(jié)點(diǎn),并得到一個(gè)父親節(jié)點(diǎn),此父親節(jié)點(diǎn)的權(quán)值為其葉子節(jié)點(diǎn)的權(quán)值之和。并將此父親節(jié)點(diǎn)的權(quán)值與其余權(quán)值進(jìn)行比較,重新選出兩個(gè)最小的權(quán)值,再進(jìn)行上述步驟,直到所有權(quán)值形成了一顆二叉樹(shù),而此二叉樹(shù)就是我們所說(shuō)的最優(yōu)二叉樹(shù),即哈夫曼樹(shù)。 以上為哈夫曼樹(shù)的建立過(guò)程,下面為哈夫曼編碼的過(guò)程,從葉子節(jié)點(diǎn)出發(fā),若此葉子節(jié)點(diǎn)為其父親節(jié)點(diǎn)的左孩子,則將其編碼為0,若為右孩子,則將其編碼為1,然后為其父親節(jié)點(diǎn)編碼,若為祖先的左孩子,則變?yōu)?,為右孩子則為1,依次向上一層進(jìn)行遍
11、歷,直到遍歷到根節(jié)點(diǎn),停止編碼。 (2)譯碼:對(duì)于已經(jīng)建好的哈夫曼樹(shù),要對(duì)其進(jìn)行譯碼,首先從根出發(fā)如果編碼為0,則往左孩子遍歷,如果編碼為1,則往右孩子遍歷,直到遍歷到葉子節(jié)點(diǎn),便求得該子串相應(yīng)的字符。 (3)初始化哈夫曼鏈表:首先輸入結(jié)點(diǎn)個(gè)數(shù),再將字符及權(quán)值輸入,調(diào)用編碼函數(shù),得到每個(gè)字符編碼并將其輸出。最后將哈夫曼編碼寫(xiě)入文件。 (4)完成編碼功能:打開(kāi)目錄下文件tobetran.txt,讀取里面的字符,對(duì)其進(jìn)行編碼后,將編碼寫(xiě)入目錄下的codefile.txt中。 (5)完成譯碼功能:打開(kāi)根目錄下codefile.txt文件,讀取里面的編碼,對(duì)其中的編碼進(jìn)行譯碼,并將得到的內(nèi)
12、容寫(xiě)入根目錄下的文件txtfile.txt中。 (6)打印編碼 (7)打印哈夫曼樹(shù) 四、實(shí)驗(yàn)結(jié)果 1.程序運(yùn)行環(huán)境為DOS,執(zhí)行文件為:Huffman2.exe 2 . 初始化哈夫曼鏈表(實(shí)驗(yàn)一) 在這里,有一個(gè)要注意的問(wèn)題,在程序剛開(kāi)始運(yùn)行的時(shí)候,需要先用“i”命令對(duì)哈夫曼樹(shù)進(jìn)行初始化。若不進(jìn)行初始化,則表明哈夫曼樹(shù)并未建立,這樣就無(wú)法進(jìn)行后續(xù)的調(diào)試。 3.編碼字符 4.編碼 5.譯碼 6.打印編碼 7.打印哈夫曼樹(shù) (實(shí)驗(yàn)二) 1.初始化的內(nèi)容如表所示: 字符 A B C D E F G H I J K
13、 L M 頻度 188 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 N O P Q R S T U V W X Y Z 頻度 57 63 15 1 48 51 80 23 8 18 1 16 1 2.初始化 3.輸入的字符以及其對(duì)應(yīng)的編碼 4、譯碼 5. 文件textfile.txt中內(nèi)容: THIS1PROGRAM1IS1MY1FAVORIT(這里的空格字符定義為1,故出現(xiàn)此譯碼) 6.打印編碼 7.打印哈夫曼樹(shù)
14、五、實(shí)驗(yàn)結(jié)果分析 此算法的時(shí)間復(fù)雜度為:O(n),n為哈夫曼樹(shù)的結(jié)點(diǎn)個(gè)數(shù)。在對(duì)哈夫曼編碼/譯碼器算法設(shè)計(jì)過(guò)程中,主要參考了教材中對(duì)哈夫曼編碼/譯碼的算法。在實(shí)現(xiàn)的過(guò)程中遇到了一些問(wèn)題,后來(lái)參考網(wǎng)上的一些代碼,進(jìn)行與自己帶嗎的整合,將編碼/譯碼算法完成。而在對(duì)編碼以及字符進(jìn)行文件保存、打開(kāi)時(shí),也遇到了不小的問(wèn)題,很大一部分來(lái)源于對(duì)于以前C語(yǔ)言對(duì)文件操作的不熟練,所以在解決過(guò)程中,參考了一些類似的成功算法實(shí)例。 六、實(shí)驗(yàn)心得 對(duì)于本次課程設(shè)計(jì),主要是需要掌握哈夫曼樹(shù)建立、哈夫曼編碼以及哈夫曼譯碼的算法。并能將其熟練應(yīng)用于編譯碼器的完成。經(jīng)過(guò)這次的課程設(shè)計(jì),使我們更加了解了數(shù)據(jù)結(jié)構(gòu),也更深
15、入地了解了哈夫曼編碼與譯碼算法,課程設(shè)計(jì)的題目比我們平常的實(shí)驗(yàn)內(nèi)容要難,完成它不僅需要有厚實(shí)的語(yǔ)言基礎(chǔ),而且還要熟練掌握哈夫曼編碼與譯碼的算法,另外對(duì)于文件的基本操作也需要熟悉。
由于本次課程設(shè)計(jì)時(shí)間安排得比較遲,所以大部分同學(xué)都在上課之前就把實(shí)驗(yàn)做好了,由于在課外做,碰到許多問(wèn)題無(wú)法請(qǐng)教老師,但是通過(guò)上網(wǎng)找尋解決辦法,大部分的錯(cuò)誤與問(wèn)題也都能基本解決。
七、主要代碼
#include
16、nst int UINT_MAX=1000; typedef struct //哈夫曼樹(shù)的存儲(chǔ)表示 { int weight; //權(quán)值 int parent,lchild,rchild; //父節(jié)點(diǎn),左孩子結(jié)點(diǎn),右孩子結(jié)點(diǎn) }HTNode,* HuffmanTree; //動(dòng)態(tài)分配數(shù)組存儲(chǔ)哈夫曼樹(shù) typedef char **HuffmanCode;//動(dòng)態(tài)分配數(shù)組存儲(chǔ)哈夫曼編碼表 //-----------全局變量----------------------- Huffman
17、Tree HT; //代表赫夫曼樹(shù) HuffmanCode HC; //代表赫夫曼編碼 int *w,i,j,n; char *z; int flag=0; int numb=0; // -----------------求赫夫曼編碼----------------------- void line()//畫(huà)分割線的函數(shù) { cout<<"\n---------------------------------------------
18、-----\n";
}
int min(HuffmanTree t,int i)//找兩個(gè)最小的權(quán)值
{
int j,flag;
int k=UINT_MAX; // 取k為不小于可能的值
for(j=1;j<=i;j++)
if(t[j].weight 19、----
void select(HuffmanTree t,int i,int &s1,int &s2)
{
int j;
s1=min(t,i);
s2=min(t,i);
if(s1>s2)// s1為最小的兩個(gè)值中序號(hào)較小的那個(gè)
{
j=s1;
s1=s2;
s2=j;
}
}
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n)
{
int m,i,s1,s2,start;
int c,f;
HuffmanTree p;
char *cd; 20、
if(n<=1)
return;
m=2*n-1;//申請(qǐng)2n-1個(gè)內(nèi)存單元
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); // 0號(hào)單元未用
for(p=HT+1,i=1;i<=n;++i,++p,++w)
{
p->weight=*w;//賦權(quán)值
p->parent=0;
p->lchild=0;
p->rchild=0;
}
for(;i<=m;++i,++p)//初始化
p->parent=0;
for(i=n+1;i<=m;++i) // 建赫 21、夫曼樹(shù)
{
select(HT,i-1,s1,s2);//調(diào)用建子樹(shù)的函數(shù)
HT[s1].parent=HT[s2].parent=i;//i是s1和s2的父節(jié)點(diǎn)
HT[i].lchild=s1;
HT[i].rchild=s2;//s1和s2是i的兒子節(jié)點(diǎn)
HT[i].weight=HT[s1].weight+HT[s2].weight;//i的權(quán)值為s1和s2的和
}
HC=(HuffmanCode)malloc((n+1)*sizeof(char*));//分配n個(gè)字符編碼的頭指針向量
cd=(char*)malloc(n*sizeof(c 22、har)); //分配求編碼的工作空間
cd[n-1]=\0; //編碼結(jié)束符
for(i=1;i<=n;i++)//逐個(gè)字符求哈夫曼編碼
{
start=n-1; //編碼結(jié)束符位置
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) // 從葉子到根逆向求編碼
if(HT[f].lchild==c)
cd[--start]=0;
else
cd[--start]=1;
HC[i]=(char*)malloc((n-start)*sizeof(char));//為第i個(gè)字符編碼分配 23、空間
strcpy(HC[i],&cd[start]); //從cd復(fù)制編碼(串)到HC
}
free(cd);//釋放工作空間
}
//--------------初始化哈夫曼鏈表---------------------------------
void init()
{
flag=1;
int num;
int num2;
cout<<"下面初始化赫夫曼鏈表"< 24、 z=(char*)malloc(n*sizeof(char));//字符
cout<<"\n請(qǐng)依次輸入"< 25、e();
cout<<"\n請(qǐng)依次輸入"< 26、有編碼
{
puts(HC[i]);
}
//--------------------------將赫夫曼編碼寫(xiě)入文件---------
cout<<"下面將赫夫曼編碼寫(xiě)入文件"< 27、mTree,"%6d",*(w+i));
fputs(r,htmTree);
}
for(i=1;i<=n;i++)
{
fputs(HC[i],htmTree);
fputs(r,htmTree);
}
fclose(htmTree);
cout<<"已將字符與對(duì)應(yīng)編碼寫(xiě)入根目錄下文件htmTree.txt中"< 28、*virttran,*tobetran;
char str[100];
if((tobetran=fopen("tobetran.txt","w"))==NULL)
{
cout<<"不能打開(kāi)文件"< 29、
void encode() //完成編碼功能
{
cout<<"下面對(duì)目錄下文件tobetran.txt中的字符進(jìn)行編碼"< 30、 tran=(char*)malloc(100*sizeof(char)); //為tran分配100個(gè)字節(jié)
while(i==99)
{
if(fgets(tran,100,tobetran)==NULL)
{
cout<<"不能打開(kāi)文件"< 31、[j]);
if(j>n)
{
cout<<"字符錯(cuò)誤,無(wú)法編碼!"< 32、完成譯碼功能
{
cout<<"下面對(duì)根目錄下文件codefile.txt中的字符進(jìn)行譯碼"< 33、ength=10000;
tbdc=(char*)malloc(length*sizeof(char)); //分配空間
fgets(tbdc,length,codef);
outext=(char*)malloc(length*sizeof(char)); //分配空間
m=2*n-1;
for(i=0;*(tbdc+i)!=\0;i++) //進(jìn)入循環(huán)
{
i2=*(tbdc+i);
if(HT[m].lchild==0)
{
*(outext+io)=*(z+m-1);
io++;
m=2*n-1;
i--;
34、
}
else if(i2==0) m=HT[m].lchild;
else if(i2==1) m=HT[m].rchild;
}
*(outext+io)=\0;
fputs(outext,txtfile);
cout<<"譯碼完成"< 35、
void printcode() //打印代碼
{
cout<<"下面打印根目錄下文件CodePrin.txt中編碼字符"< 36、efile.txt","r"))==NULL)
{
cout<<"不能打開(kāi)文件"< 37、);
cout<<"打印工作結(jié)束"< 38、量為已被聲明為全局變量
coprint(HT+start->rchild,HT);
if(start->lchild!=NULL&&start->rchild!=NULL) t=<;
cout< 39、樹(shù)
{
HuffmanTree p;
p=HT+w;
cout<<"下面打印赫夫曼樹(shù)"< 40、<" e.編 碼 d.譯 碼 \n\t\t";
cout<<" p.打印編碼 t.打印赫夫曼樹(shù) \n\t\t";
cout<<" q.退 出 \n\t\t";
if(flag==0)cout<<"\n請(qǐng)先初始化赫夫曼鏈表,輸入i\n";
cout<<"請(qǐng)選擇你要進(jìn)行的操作:";
}
/*2.主程序*/
void main()
{
char choice;
while(choice!=q)
{ 41、 printhead();
cin>>choice;
switch(choice)
{
case i: //按下i則進(jìn)行初始化赫夫曼鏈表,調(diào)用init函數(shù)
init();
break;
case w: //按下w編碼字符,調(diào)用inputcode函數(shù)
inputcode();
break;
case e: //按下e編碼,調(diào)用encode函數(shù)
encode();
break;
case d: //按下d譯碼,調(diào)用decode函 42、數(shù)
decode();
break;
case p: //按下p打印編碼,調(diào)用printcode函數(shù)
printcode();
break;
case t: //按下t打印赫夫曼樹(shù),調(diào)用printree函數(shù)
printree(HT,2*n-1);
break;
case q: //按下q退出
break;
default:
cout<<"輸入錯(cuò)誤,請(qǐng)重新選擇"<
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第七章-透射電子顯微鏡
- 群落的結(jié)構(gòu)(課件)
- 焊接基礎(chǔ)知識(shí)
- 水文地質(zhì)學(xué)課件
- 某公司員工工傷安全管理規(guī)定
- 消防培訓(xùn)課件:安全檢修(要點(diǎn))
- 某公司安全生產(chǎn)考核與獎(jiǎng)懲辦法范文
- 安全作業(yè)活動(dòng)安全排查表
- 某公司危險(xiǎn)源安全辨識(shí)、分類和風(fēng)險(xiǎn)評(píng)價(jià)、分級(jí)辦法
- 某公司消防安全常識(shí)培訓(xùn)資料
- 安全培訓(xùn)資料:危險(xiǎn)化學(xué)品的類別
- 中小學(xué)寒假學(xué)習(xí)計(jì)劃快樂(lè)度寒假充實(shí)促成長(zhǎng)
- 紅色插畫(huà)風(fēng)輸血相關(guān)知識(shí)培訓(xùn)臨床輸血流程常見(jiàn)輸血不良反應(yīng)
- 14.應(yīng)急救援隊(duì)伍訓(xùn)練記錄
- 某公司各部門及人員安全生產(chǎn)責(zé)任制