欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      PHP 程序員學(xué)數(shù)據(jù)結(jié)構(gòu)與算法之《棧》

      時(shí)間:2019-05-12 20:14:42下載本文作者:會(huì)員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《PHP 程序員學(xué)數(shù)據(jù)結(jié)構(gòu)與算法之《?!贰?,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《PHP 程序員學(xué)數(shù)據(jù)結(jié)構(gòu)與算法之《?!贰?。

      第一篇:PHP 程序員學(xué)數(shù)據(jù)結(jié)構(gòu)與算法之《?!?/a>

      PHP 程序員學(xué)數(shù)據(jù)結(jié)構(gòu)與算法之《?!?/p>

      介紹

      “要成高手,必練此功”。

      要成為優(yōu)秀的程序員,數(shù)據(jù)結(jié)構(gòu)和算法是必修的內(nèi)容。而現(xiàn)在的Web程序員使用傳統(tǒng)算法和數(shù)據(jù)結(jié)構(gòu)都比較少,因?yàn)楹芏嗨惴ǘ际前b好的,不用我們?nèi)ゲ傩木唧w的實(shí)現(xiàn)細(xì)節(jié),如PHP的取棧操作array_pop,進(jìn)棧操作array_push,都有指定的庫函數(shù),導(dǎo)致我們對(duì)基礎(chǔ)算法的研究越來越少,最后成為一個(gè)工具的傀儡而已。

      所以我還是建議更多的coder從基礎(chǔ)開始學(xué)習(xí)。這篇就先講我們最熟悉的棧操作開始入手,讓我們熟悉棧。

      棧為何物?

      口訣“后進(jìn)先出”,這是我印象最深的一句話,也是老師一坨講解中,印象最深刻的。

      定義:棧是限制插入和刪除都只能發(fā)生在一個(gè)位置上進(jìn)行的線性表,該位置是線性表的末端,叫做棧的頂。

      過程:先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開始彈出數(shù)據(jù)(最后一個(gè)數(shù)據(jù)被第一個(gè)讀出來)。

      分析

      通過定義和過程,我們分析出數(shù)據(jù)結(jié)構(gòu)(紅色標(biāo)識(shí)),動(dòng)作部分(藍(lán)色標(biāo)識(shí)),以及動(dòng)作的規(guī)則(黃色標(biāo)識(shí))。

      請(qǐng)看

      lv包包、古奇女包、coach包:004km.cn|兔毛皮草、獺兔皮草、皮草服飾:004km.cn

      組成成分

      數(shù)據(jù):線性表(用array結(jié)構(gòu)保存命名為data),末端索引(用int結(jié)構(gòu)保存命名為end,初始值為null——因?yàn)殚_始線性表是沒有元素的,所以就沒有末端索引這么一說,而且由于不斷取數(shù)據(jù),添加數(shù)據(jù),這個(gè)末端是變化的元素。)。

      動(dòng)作(方法):壓入(push:規(guī)則,放在線性表最后面),彈出(pop:規(guī)則,從最后取出,并且末端位置向前移動(dòng))。

      編碼

      lv包包、古奇女包、coach包:004km.cn|兔毛皮草、獺兔皮草、皮草服飾:004km.cn

      運(yùn)行結(jié)果

      lv包包、古奇女包、coach包:004km.cn|兔毛皮草、獺兔皮草、皮草服飾:004km.cn

      總結(jié)

      以上是本人對(duì)棧的分析理解過程,由于我是一名php coder,所以我用php的角度去分析和編碼。

      如果是C語言去編碼,數(shù)組應(yīng)該指定最大寬度,因?yàn)镃語言數(shù)組不像php數(shù)組能自行增長,必須要有一個(gè)初始寬度。

      lv包包、古奇女包、coach包:004km.cn|兔毛皮草、獺兔皮草、皮草服飾:004km.cn

      第二篇:數(shù)據(jù)結(jié)構(gòu)棧與隊(duì)列報(bào)告

      棧和隊(duì)列上機(jī)實(shí)習(xí)

      1、實(shí)驗(yàn)?zāi)康模?/p>

      (1)熟練掌握棧的邏輯結(jié)構(gòu)和操作規(guī)則,能在相應(yīng)的實(shí)際問題中正確選用該結(jié)構(gòu)。(2)熟練掌握棧的2種存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)方法(順序棧和鏈棧),兩種存儲(chǔ)結(jié)構(gòu)和基本運(yùn)算的實(shí)

      現(xiàn)算法,注意棧空盒滿的判斷條件及它們的描述方法。

      (3)熟練掌握隊(duì)列的邏輯結(jié)構(gòu)和操作規(guī)范,能在相應(yīng)的實(shí)際問題中正確選用該結(jié)構(gòu)。(4)掌握循環(huán)隊(duì)列與鏈隊(duì)列兩種存儲(chǔ)結(jié)構(gòu)的實(shí)現(xiàn),熟練掌握各種隊(duì)列基本運(yùn)算的實(shí)現(xiàn)。

      2、實(shí)驗(yàn)要求:

      (1)順序棧的插入、刪除,棧頂數(shù)據(jù)元素的讀取。(2)鏈棧的插入、刪除,棧頂數(shù)據(jù)元素的讀取。(3)循環(huán)隊(duì)列的插入、刪除。(4)鏈隊(duì)列的插入、刪除。

      3、實(shí)驗(yàn)內(nèi)容: ① 棧

      (1)抽象數(shù)據(jù)類型定義

      typedef struct

      {

      ElemType data[MaxSize];

      //棧的空間大小為MaxSize

      int top;

      //設(shè)置棧頂指針

      }SqStack;

      //棧的結(jié)構(gòu)定義

      在本次實(shí)驗(yàn)中,首先建立一個(gè)空棧,進(jìn)入主程序后首先初始化棧為其分配空間,然后進(jìn)入菜單選擇界面,通過不同的數(shù)字輸入,實(shí)現(xiàn)入棧,出棧,讀取棧頂元素,顯示棧的所有元素,棧的長度,釋放棧等操作。

      (2)存儲(chǔ)結(jié)構(gòu)定義及算法思想

      在棧結(jié)構(gòu)體的定義中,typedef int Typeelem 為整型,存儲(chǔ)結(jié)構(gòu)(入棧)如下:

      cin>>a;

      s->top++;

      //在入棧是首先將棧頂指針向上加1

      s->data[s->top]=a;

      //與數(shù)組賦值一樣,直接賦值

      //其他存儲(chǔ)與此類似,都是直接賦值與數(shù)組的某一位

      退棧函數(shù)模塊:

      void Pop(SqStack * &s){

      //對(duì)指針的引用

      if(s->top ==-1){

      cout<<“棧是空棧,不能退?!?

      //首先判斷是否為空棧,若為空,則退出

      return;} cout<<“退棧的元素為:”<data[s->top]<

      //顯示退棧元素

      s->top--;

      //棧頂元素減1,指向?qū)嶋H棧的最上面 }

      顯示棧所有元素函數(shù)模塊:

      void DispStack(SqStack *s){

      //從棧頂?shù)綏5醉樞蝻@示所有元素

      int i;cout<<“棧的元素分別為:”<top;i>=0;i--){ cout<data[i]<<“ ”;

      //同過循環(huán)實(shí)現(xiàn)實(shí)現(xiàn)從棧頂元素到棧底元素的遍歷以輸出

      } cout<

      棧結(jié)構(gòu)的入棧和退棧是兩個(gè)相反的過程,先進(jìn)后出,入棧是先讓棧頂指針加1,指向未被賦值位置,然后進(jìn)行賦值,退棧是先取出退棧元素,然后棧頂元素減1,指向推展后的實(shí)際棧頂。諸如讀取棧頂元素,顯示棧的元素,讀取棧的長度,都是用過對(duì)棧頂指針實(shí)現(xiàn)相關(guān)操作。

      (3)實(shí)驗(yàn)結(jié)果與分析

      ② 循環(huán)隊(duì)列

      (1)抽象數(shù)據(jù)類型定義

      typedef struct {

      ElemType elem[Maxqsize];

      //循環(huán)隊(duì)列的長度為MaxSize

      int front,rear;

      //設(shè)置隊(duì)列的頭指針和尾指針

      }SqQueue;

      //循環(huán)隊(duì)列的結(jié)構(gòu)體定義

      在本次實(shí)驗(yàn)中,首先建立一個(gè)空隊(duì)列,進(jìn)入主程序后首先初始化隊(duì)列為其分配空間,然后進(jìn)入菜單選擇界面,通過不同的數(shù)字輸入,實(shí)現(xiàn)入隊(duì),出隊(duì),顯示隊(duì)列的所有元素,隊(duì)列的長度,釋放隊(duì)列等操作。

      (2)存儲(chǔ)結(jié)構(gòu)定義及算法思想

      在隊(duì)列結(jié)構(gòu)體的定義中,typedef int Typeelem 為整型,存儲(chǔ)(入隊(duì))結(jié)構(gòu)如下:

      q->rear=(q->rear+1)%Maxqsize;

      //尾指針加1

      q->elem[q->rear]=a;

      //將入隊(duì)元素裝到新的空尾部

      在此隊(duì)列的存儲(chǔ)結(jié)構(gòu)的實(shí)現(xiàn):先讓隊(duì)尾指針進(jìn)1,再將新的元素加入到隊(duì)尾指針?biāo)甘镜奈恢?,因此,?duì)尾指針指示實(shí)際的隊(duì)尾位置,隊(duì)頭指針指示實(shí)際隊(duì)頭的前一位置,要想退出隊(duì)頭元素,必須先讓隊(duì)頭指針進(jìn)1,才能取出隊(duì)頭元素。

      退隊(duì)函數(shù)模塊如下:

      void deQueue(SqQueue *&q){

      //對(duì)指針的引用

      if(QueueEmpty(q))

      {

      //調(diào)用帶返回值的判斷空隊(duì)函數(shù)

      cout<<“隊(duì)列為空”<

      //判斷隊(duì)列是否為空

      }

      q->front=(q->front+1)%Maxqsize;

      //隊(duì)頭指針進(jìn)1

      cout<<“退隊(duì)的元素為:”<elem[q->front]<

      //取出隊(duì)頭元素 }

      遍歷隊(duì)表函數(shù):

      void displayqueue(SqQueue *q){

      int m;m=q->front+1;

      //隊(duì)頭元素進(jìn)1,指向?qū)嶋H隊(duì)頭

      if(QueueEmpty(q))

      {

      cout<<“隊(duì)列為空”<

      //判斷是夠?yàn)榭贞?duì)

      }

      cout<<“所有隊(duì)列元素為:”<

      while(q->rear+1>m){

      cout<elem[m]<<“ ”;

      //通過循環(huán)遍歷所有元素

      m++;

      }

      cout<

      循環(huán)隊(duì)列的入隊(duì)和退隊(duì)分別是在隊(duì)尾與隊(duì)頭跟別進(jìn)行操作的,通過隊(duì)頭隊(duì)尾指針的操作便可實(shí)現(xiàn)對(duì)隊(duì)列的相關(guān)操作。

      (3)實(shí)驗(yàn)結(jié)果與分析

      ③ 心得體會(huì)

      本次上機(jī)是做棧與隊(duì)列的操作,這次實(shí)驗(yàn),我有意的用到了對(duì)指針的引用與指針實(shí)現(xiàn)子函數(shù)功能的調(diào)用,剛開始編譯的時(shí)候也有錯(cuò)誤,但是在慢慢的摸索中,也逐漸掌握了它們的用法,這次實(shí)驗(yàn)也讓我熟練了對(duì)隊(duì)列與棧存儲(chǔ)結(jié)構(gòu)的應(yīng)用。

      附錄:

      順序表源代碼: 棧:

      #include using namespace std;#define MaxSize 5 typedef int ElemType;int e;typedef struct { ElemType data[MaxSize];int top;}SqStack;

      void InitStack(SqStack * &s)

      //建立一個(gè)空棧,即將棧頂指針指向-1即可 的引用 { s=(SqStack *)malloc(sizeof(SqStack));s->top=-1;}

      void ClearStack(SqStack * &s)

      //釋放棧s占用的存儲(chǔ)空間 { free(s);}

      void StackLength(SqStack *s)

      { cout<<“棧的長度為:” <<(s->top +1)<

      int StackEmpty(SqStack *s){ return(s->top==-1);}

      void Push(SqStack *&s){ if(s->top==MaxSize-1)

      {

      cout<<“棧滿”<

      //

      s=(SqStack *)realloc(s,sizeof(SqStack));} int a;

      指針

      cout<<“請(qǐng)輸入入棧元素”<>a;s->top++;s->data[s->top]=a;}

      void Pop(SqStack * &s){ if(s->top ==-1){

      cout<<“棧是空棧,不能退?!?

      return;} cout<<“退棧的元素為:”<data[s->top]<top--;}

      void GetTop(SqStack * &s,ElemType &e){ if(s->top==-1){cout<<“空?!?data[s->top];}

      void DispStack(SqStack *s)

      //從棧頂?shù)綏5醉樞蝻@示所有元素 { int i;cout<<“棧的元素分別為:”<top;i>=0;i--){ cout<data[i]<<“ ”;} cout<

      cout<<“請(qǐng)選擇功能”<

      cout<<“

      入棧

      1”<

      cout<<“

      出棧

      2”<

      cout<<“

      讀取棧頂元素

      3”<

      cout<<“

      顯示棧所有元素

      4”<

      cout<<“

      棧的長度

      5”<

      cout<<“

      釋放棧

      6”<

      cin>>k;

      switch(k)

      {

      case 1: Push(s);break;

      case 2: Pop(s);break;

      case 3: GetTop(s,e);cout<<“棧頂元素為: ”<

      case 4: DispStack(s);break;

      case 5: StackLength(s);break;

      case 6: ClearStack(s);break;

      default :break;

      } } }

      隊(duì)列:

      #include using namespace std;#define Maxqsize 8 typedef int TypeElem;typedef struct {

      TypeElem elem[Maxqsize];

      int front,rear;}SqQueue;void InitQueue(SqQueue *&q){

      q=(SqQueue *)malloc(sizeof(SqQueue));

      q->front=q->rear=0;} void ClearQueue(SqQueue *&q){

      free(q);exit(0);} void QueueLength(SqQueue *q){

      cout<<“隊(duì)列長度為:”<<(q->rear-q->front+Maxqsize)%Maxqsize<

      return(q->front==q->rear);

      } void enQueue(SqQueue *&q){ int a;

      if((q->rear+1)%Maxqsize==q->front)

      {

      cout<<“隊(duì)列已滿,無法插入”<

      }

      cout<<“請(qǐng)輸入插入元素”<

      cin>>a;

      q->rear=(q->rear+1)%Maxqsize;

      q->elem[q->rear]=a;} void deQueue(SqQueue *&q){

      if(QueueEmpty(q))

      {

      cout<<“隊(duì)列為空”<

      }

      q->front=(q->front+1)%Maxqsize;

      cout<<“退隊(duì)的元素為:”<elem[q->front]<

      }

      void displayqueue(SqQueue *q){

      int m;m=q->front+1;

      if(QueueEmpty(q))

      {

      cout<<“隊(duì)列為空”<

      }

      cout<<“所有隊(duì)列元素為:”<

      while(q->rear+1>m)

      {

      cout<elem[m]<<“ ”;

      m++;

      }

      cout<

      int k=0;

      SqQueue *q;

      InitQueue(q);

      if(QueueEmpty(q))cout<<“隊(duì)列為空”<

      while(1){

      cout<<“請(qǐng)選擇功能”<

      cout<<“

      入隊(duì)

      cout<<”

      出隊(duì)

      cout<<“

      隊(duì)列長度

      cout<<”

      顯示隊(duì)列元素

      cout<<“

      釋放棧

      cin>>k;

      switch(k)

      {

      case 1: enQueue(q);break;

      case 2: deQueue(q);break;

      case 3: QueueLength(q);break;

      case 4: displayqueue(q);break;

      case 5: ClearQueue(q);break;

      default :break;

      } } }

      1”<

      2“<

      4“<

      第三篇:PHP程序員

      **的個(gè)人簡歷

      個(gè)人資料

      姓名: **電子郵件: ******@qq.com

      名族: 漢出生日期: 1991/1/3

      學(xué)歷: 本科居住地址: 深圳福田

      性別: 男手機(jī)號(hào)碼: 186***7739

      4求職意向

      到崗時(shí)間:即時(shí)

      期望職位:php程序員

      工作性質(zhì):全職

      專業(yè)技能

      1、熟練掌握PHP,HTML,DIV+CSS,Javascript,Ajax,jQuery等Web開發(fā)技術(shù)。

      2、熟練使用PDO、MySQL方式操作MySQL數(shù)據(jù)庫系統(tǒng),熟悉MySQL事物及存儲(chǔ)過程。

      3、熟悉HTML,DIV+CSS前臺(tái)頁面技術(shù)和XML的使用。

      4、熟悉網(wǎng)頁靜態(tài)化、Smarty緩存,thinkPHP緩存,掌握Web防SQL注入。

      5、孰悉MVC架構(gòu)開發(fā)思想模式,熟練使用Smarty模板,ThinkPHP框架,ZendFramework框架。

      6、熟練掌握Zend Studio, Dreamweaver,Notepad++, EclipsePHP等常用Web開發(fā)工具;

      7、了解Linux基本操作。

      項(xiàng)目經(jīng)驗(yàn)? 項(xiàng)目一

      項(xiàng)目名稱:地球新聞網(wǎng)

      軟件環(huán)境:

      開發(fā)工具:

      項(xiàng)目描述: linux+apache+mysql+php Zend Studio 1.該項(xiàng)目是一個(gè)集各種新聞的網(wǎng)站。2.前臺(tái)采用div+css,javascript等

      技術(shù)進(jìn)行頁面布局,Javascript和Jquery技術(shù)制作下拉菜單、表單驗(yàn)證、復(fù)選框等效果。3.后臺(tái)采用全面向?qū)ο箝_發(fā),良好的運(yùn)用了MVC三層架

      構(gòu)模式。

      責(zé)任描述:獨(dú)立開發(fā)

      項(xiàng)目體會(huì):通過開發(fā)這次項(xiàng)目,使我對(duì)制作一個(gè)網(wǎng)站有了一個(gè)全面的了解,也同時(shí)增

      加了我的技術(shù)能力;通過該網(wǎng)站使我了解只有想不到,沒有做不到。同時(shí)

      也想到在這個(gè)發(fā)展迅速的社會(huì),我們只有不斷努力學(xué)習(xí)新的技術(shù)才能滿足

      客戶的要求。

      ? 項(xiàng)目二

      項(xiàng)目名稱:聚焦購物商城

      軟件環(huán)境:

      開發(fā)工具:

      項(xiàng)目描述: windows+apache+mysql+php Zend Studio 8.0 該項(xiàng)目是一個(gè)大型的網(wǎng)站商城,采用thinkPHP主流框架開發(fā)。

      前臺(tái)包括:商品列表、搜索、商品詳細(xì)頁、注冊(cè)、登錄、購物車、會(huì)員

      中心、評(píng)論等。后臺(tái)有:商品管理、訂單管理、會(huì)員管理、商家管理等。

      滿足用戶購物流程的各種需求

      責(zé)任描述: 負(fù)責(zé)完成了MySQL數(shù)據(jù)表、字段、索引的分析與創(chuàng)建,主頁的圖片輪換,商品詳細(xì)

      頁,購物車模塊,登錄注冊(cè)等功能,以及后臺(tái)商品管理模塊。

      項(xiàng)目體會(huì):通過此次項(xiàng)目的實(shí)戰(zhàn),讓我對(duì)thinkPHP的掌握更加深刻,同時(shí)給我感覺的是使用模板的開發(fā)速度之快,更實(shí)現(xiàn)的HTML的代碼與PHP代碼的分

      離,使得擁有更好的擴(kuò)展以及維護(hù)。

      工作經(jīng)驗(yàn)

      2012/8—2013/4業(yè)聚醫(yī)療器械(深圳)有限公司技術(shù)員 工作感想

      之前的公司主要是生產(chǎn)和研發(fā)介入性醫(yī)療器械的一家公司,我的工作任務(wù)主要從事公司導(dǎo)管支架的研發(fā),研發(fā)多種不同尺寸型號(hào)的球囊擴(kuò)張導(dǎo)管。在我的工作中,使我學(xué)到了很多東西,讓我變得更加細(xì)心,做事情更加注重細(xì)節(jié),更有時(shí)間觀念等等。

      教育經(jīng)歷

      ? 2013/4—2013/8達(dá)內(nèi)PHP培訓(xùn)php程序員主要學(xué)習(xí)了:linux系統(tǒng)常用操作命令,HTML/CSS,Javascript/Jquery/Ajax的前臺(tái)技術(shù),學(xué)習(xí)了用Linux系統(tǒng)和Windows系統(tǒng)開發(fā)項(xiàng)目,學(xué)習(xí)了Smarty模板,Zendframework,thinkPHP框架的使用,學(xué)習(xí)了DEDECMS二次開發(fā)。

      在學(xué)習(xí)的過程中,自己獨(dú)立完成了一個(gè)小項(xiàng)目《地球新聞網(wǎng)》,和同學(xué)合作完

      成了一個(gè)商城網(wǎng)站《聚焦購物》,通過這兩個(gè)項(xiàng)目的實(shí)戰(zhàn),為我以后的工作打

      下了堅(jiān)實(shí)的基礎(chǔ)。

      ? 2008/9—2012/7湖北信息工程專修學(xué)院電子商務(wù)本科主要學(xué)習(xí)了:計(jì)算機(jī)應(yīng)用基礎(chǔ),管理學(xué),電子商務(wù)概論,網(wǎng)頁設(shè)計(jì)與制作,電子商務(wù)法,商務(wù)溝通與談判及商業(yè)職業(yè)道德專業(yè)課程,安全教育等課程。

      通過這些課程的學(xué)習(xí),使我對(duì)電子商務(wù)系統(tǒng)建設(shè)與管理打下了良好的基礎(chǔ),同時(shí)也使我擁有較強(qiáng)的溝通能力和職業(yè)道德水準(zhǔn)。

      個(gè)人評(píng)價(jià) 1.本人細(xì)心,樂觀積極心態(tài),吃苦耐勞,勇于挑戰(zhàn)自我,熱愛學(xué)習(xí),喜歡總結(jié);

      2.具備良好的團(tuán)隊(duì)精神,能很好的與團(tuán)隊(duì)協(xié)作開發(fā),有良好的溝通能力,喜歡交朋友;

      3.性格開朗,陽光,喜歡籃球,游泳,羽毛球等體育運(yùn)動(dòng)。

      第四篇:數(shù)據(jù)結(jié)構(gòu)與算法總結(jié)

      《數(shù)據(jù)結(jié)構(gòu)與算法》課程學(xué)習(xí)總結(jié)報(bào)告

      100401200510計(jì)本(4)班章興春

      本學(xué)期所學(xué)習(xí)的《數(shù)據(jù)結(jié)構(gòu)與算法》課程已經(jīng)告一段落,就其知識(shí)點(diǎn)及其掌握情況、學(xué)習(xí)體會(huì)以及對(duì)該門課程的教學(xué)建議等方面進(jìn)行學(xué)習(xí)總結(jié)。以便在所學(xué)習(xí)知識(shí)有更深刻的認(rèn)識(shí)。

      一、《數(shù)據(jù)結(jié)構(gòu)與算法》知識(shí)點(diǎn):

      學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)之前、一直以為數(shù)據(jù)結(jié)構(gòu)是一門新的語言、后來才知道學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了更加高效的的組織數(shù)據(jù)、設(shè)計(jì)出良好的算法,而算法則是一個(gè)程序的靈魂。經(jīng)過了一學(xué)期的數(shù)據(jù)結(jié)構(gòu)了,在期末之際對(duì)其進(jìn)行總結(jié)。首先,學(xué)完數(shù)據(jù)結(jié)構(gòu)我們應(yīng)該知道數(shù)據(jù)結(jié)構(gòu)講的是什么,數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計(jì)算的研究的程序設(shè)計(jì)問題中所出現(xiàn)的計(jì)算機(jī)處理對(duì)象以及它們之間關(guān)系和操作的學(xué)科。

      第一章主要介紹了相關(guān)概念,如數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)類型以及數(shù)據(jù)結(jié)構(gòu)的定義。其中,數(shù)據(jù)結(jié)構(gòu)包括邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和運(yùn)算集合。邏輯結(jié)構(gòu)分為四類:集合型、線性、樹形和圖形結(jié)構(gòu),數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu)分為:順序存儲(chǔ)、鏈接存儲(chǔ)、索引存儲(chǔ)和散列存儲(chǔ)四類。最后著重介紹算法性能分析,包括算法的時(shí)間性能分析以及算法的空間性能分析。

      第二章具體地介紹了順序表的定義、特點(diǎn)及其主要操作,如查找、插入和刪除的實(shí)現(xiàn)。需要掌握對(duì)它們的性能估計(jì)。包括查找算法的平均查找長度,插入與刪除算法中的對(duì)象平均移動(dòng)次數(shù)。

      鏈表中數(shù)據(jù)元素的存儲(chǔ)不一定是連續(xù)的,還可以占用任意的、不連續(xù)的物理存儲(chǔ)區(qū)域。與順序表相比,鏈表的插入、刪除不需要移動(dòng)元素,給算法的效率帶來較大的提高。鏈表這一章中介紹了鏈表的節(jié)點(diǎn)結(jié)構(gòu)、靜態(tài)與動(dòng)態(tài)鏈表的概念、鏈表的基本運(yùn)算(如求表長、插入、查找、刪除等)、單鏈表的建立(頭插法和尾插法)以及雙向循環(huán)鏈表的定義、結(jié)構(gòu)、功能和基本算法。

      第三章介紹了堆棧與隊(duì)列這兩種運(yùn)算受限制的線性結(jié)構(gòu)。其基本運(yùn)算方法與順序表和鏈表運(yùn)算方法基本相同,不同的是堆棧須遵循“先進(jìn)后出”的規(guī)則,對(duì)堆棧的操作只能在棧頂進(jìn)行;而隊(duì)列要遵循“先進(jìn)先出”的規(guī)則,教材中列出了兩種結(jié)構(gòu)的相應(yīng)算法,如入棧、出棧、入隊(duì)、出隊(duì)等。在介紹隊(duì)列時(shí),提出了循環(huán)隊(duì)列的概念,以避免“假溢出”的現(xiàn)象。算法上要求掌握進(jìn)棧、退棧、取棧頂元素、判??蘸兄每諚5任宸N操作及掌握使用元素個(gè)數(shù)計(jì)數(shù)器及少用一個(gè)元素空間來區(qū)分隊(duì)列空、隊(duì)列滿的方法。

      第四章串和數(shù)組中,我們知道串是一種特殊的線性表,是由零個(gè)或多個(gè)任意字符組成的字符序列。串的儲(chǔ)存結(jié)構(gòu)分為緊縮模式和非緊縮模式。

      基本運(yùn)算需掌握求串長、串賦值、連接操作、求子串、串比較、串定位、串插入、串刪除、串替換等。

      第五章二叉樹的知識(shí)是重點(diǎn)內(nèi)容。在介紹有關(guān)概念時(shí),提到了二叉樹的性質(zhì)以及兩種特殊的二叉樹:完全二叉樹和滿二叉樹。接著介紹二叉樹的順序存儲(chǔ)和鏈接存儲(chǔ)以及生成算法。重點(diǎn)介紹二叉樹的遍歷算法(遞歸算法、先序、中序和后序遍歷非遞歸算法)和線索二叉樹。二叉樹的應(yīng)用:基本算法、哈弗曼樹、二叉排序樹和堆排序。

      樹與二叉樹是不同的概念。教材介紹了樹和森林的概念、遍歷和存儲(chǔ)結(jié)構(gòu),還有樹、森林和二叉樹的相互關(guān)系,樹或森林怎樣轉(zhuǎn)化成二叉樹,二叉樹又如何轉(zhuǎn)換為樹和森林等算法。

      第六章介紹了圖的概念及其應(yīng)用,圖的存儲(chǔ)結(jié)構(gòu)的知識(shí)點(diǎn)有:鄰接矩陣、鄰接表、逆鄰接表、十字鏈表和鄰接多重表。圖的遍歷包括圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷。其余知識(shí)點(diǎn)有:有向圖、連通圖、生成樹和森林、最短路徑問題和有向無環(huán)圖及其應(yīng)用。有向無環(huán)圖重點(diǎn)理解AOV網(wǎng)和拓?fù)渑判蚣捌渌惴ā?/p>

      最后兩章集體說明了查找和排序算法,查找教材上介紹了靜態(tài)查找表和哈希查找表,靜態(tài)查找表中介紹了順序查找、折半查找以及分塊查找。哈希法中,學(xué)習(xí)要點(diǎn)包括哈希函數(shù)的比較;解決地址沖突的線性探查法的運(yùn)用,平均探查次數(shù);解決地址沖突的二次哈希法的運(yùn)用。

      排序是使用最頻繁的一類算法,可分為內(nèi)部排序和外部排序。主要需要理解排序的基本概念,在算法上、需要掌握插入排序(包括直接插入排序算法、折半插入排序算法),交換排序(包括冒泡排序算法、快速排序遞歸算法),選擇排序(包括直接選擇排序算法、堆排序算法)等。

      二、對(duì)各知識(shí)點(diǎn)的掌握情況

      總體來看,對(duì)教材中的知識(shí)點(diǎn)理解較為完善,但各個(gè)章節(jié)均出現(xiàn)有個(gè)別知識(shí)點(diǎn)較為陌生的現(xiàn)象?,F(xiàn)將各個(gè)章節(jié)出現(xiàn)的知識(shí)點(diǎn)理解情況列舉如下。

      第一章中我對(duì)數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)的概念理解較為透徹,熟悉數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)。而對(duì)算法的時(shí)間、空間性能分析較為模糊,尤其是空間性能分析需要加強(qiáng)。

      第二章,順序表的概念、生成算法理解較為清晰,并且熟悉簡單順序查找和二分查找,對(duì)分塊查找較為含糊;排序問題中,由于冒泡排序在大一C語言課上已經(jīng)學(xué)習(xí)過,再來學(xué)習(xí)感覺很輕松。對(duì)插入排序和選擇排序理解良好,但是,在實(shí)際運(yùn)用中仍然出現(xiàn)明顯不熟練的現(xiàn)象。由于在歸并排序?qū)W習(xí)中感覺較吃力,現(xiàn)在對(duì)這種排序方法仍然非常模糊,所以需要花較多的時(shí)間來補(bǔ)習(xí)。此外串的模式匹配也是較難理解的一個(gè)地方。

      鏈表這一章中,除對(duì)雙向循環(huán)鏈表這一知識(shí)點(diǎn)理解困難之外,其他的知識(shí)點(diǎn)像單鏈表的建立和基本算法等都較為熟悉。

      接下來的有關(guān)堆棧以及隊(duì)列的知識(shí)點(diǎn)比較少,除有關(guān)算法較為特殊以外,其余算法都是先前學(xué)過的順序表和鏈表的知識(shí),加上思想上較為重視,因此這部分內(nèi)容是我對(duì)全書掌握最好的一部分。不足之處仍然表現(xiàn)在算法的性能分析上。

      在學(xué)習(xí)第六章時(shí)感覺較為吃力的部分在于矩陣的應(yīng)用上,尤其對(duì)矩陣轉(zhuǎn)置算法的C語言描述不太理解。稀疏矩陣相加算法中,用三元組表實(shí)現(xiàn)比較容易理解,對(duì)十字鏈表進(jìn)行矩陣相加的方法較為陌生。

      第七章是全書的重點(diǎn),卻也有一些內(nèi)容沒有完全理解。在第一節(jié)基本概念中,二叉樹的性質(zhì)容易懂卻很難記憶。對(duì)二叉樹的存儲(chǔ)結(jié)構(gòu)和遍歷算法這部分內(nèi)容掌握較好,能夠熟練運(yùn)用,而對(duì)于二叉樹應(yīng)用中的哈弗曼樹卻比較陌生。

      第八章內(nèi)容較少,牽涉到所學(xué)的隊(duì)列的有關(guān)內(nèi)容,總體來說理解上沒有什么困難,問題依舊出現(xiàn)在算法的性能分析上。

      散列結(jié)構(gòu)這一章理解比較完善的知識(shí)點(diǎn)有:基本概念和存儲(chǔ)結(jié)構(gòu)。散列函數(shù)中直接定址法和除留余數(shù)法學(xué)得比較扎實(shí),對(duì)數(shù)字分析法等方法則感覺較為陌生。對(duì)兩種沖突處理的算法思想的理解良好,問題在于用C語言描述上。

      最后一章,圖及其應(yīng)用中,圖的定義、基本運(yùn)算如圖的生成等起初理解有困難,但隨著學(xué)習(xí)深入,對(duì)它的概念也逐步明朗起來。鄰接矩陣、鄰接表和逆鄰接表掌握較好,而對(duì)十字鏈表和鄰接多重表則較為陌生。感覺理解較為吃力的內(nèi)容還有圖的遍歷(包括深度和廣度優(yōu)先遍歷),最小生成樹問題也是比較陌生的知識(shí)點(diǎn)。最短路徑和AOV網(wǎng)學(xué)習(xí)起來感覺比較輕松,而對(duì)于C語言描述卻又不大明白。

      由于平時(shí)上機(jī)練習(xí)的少,對(duì)于教材中很多算法都掌握的不是很熟悉、不過這些都是可以彌補(bǔ)的,我會(huì)在剩下的時(shí)間中不斷練習(xí)書上給出的算法和練習(xí),正如教材上說的,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),僅從書本上學(xué)習(xí)是不夠的,必須經(jīng)過大量的程序設(shè)計(jì)實(shí)踐,在實(shí)踐中體會(huì)構(gòu)造性思維方法,掌握數(shù)據(jù)組織與程序設(shè)計(jì)技術(shù)。

      三、學(xué)習(xí)體會(huì):

      多做實(shí)驗(yàn)!這個(gè)就沒有太多理由了,我一直覺得編程是一門熟練科學(xué),多編程,水平肯定會(huì)提高,最重要的是能夠養(yǎng)成一種感覺,就是對(duì)程序?qū)λ惴ǖ拿舾?,為什么那些牛人看一個(gè)算法一下子就看懂了?而自己要看很久才能弄懂,而且弄懂了過了一陣子又忘記了?其實(shí)這個(gè)是因?yàn)榕H藗円郧翱吹某绦蚝芏?,編得也很多,所以他們有了那種感覺,所以我覺得大家應(yīng)該多看程序,多寫程序,培養(yǎng)自己的感覺。

      復(fù)習(xí)和考試的技巧,我想大家應(yīng)該都有這樣的感覺,就是覺得自己什么都掌握了,但是在考試的時(shí)候就是會(huì)犯暈,有時(shí)候一出考場就知道錯(cuò)在哪個(gè)了,然后考完以后一對(duì)答案,發(fā)現(xiàn)其實(shí)考得很簡單,應(yīng)該都是自己會(huì)做的,這個(gè)就是與自己的復(fù)習(xí)和考試的技巧有關(guān)系了。

      首先就是復(fù)習(xí),前面已經(jīng)說過其實(shí)我們學(xué)的算法也就是幾十個(gè),那么我們的任務(wù)也就是理解這幾十個(gè)算法,復(fù)習(xí)也就是要加深你的理解。如何理解算法,然后理解到什么程度呢? 是能默出整個(gè)算法嗎?其實(shí)不是這樣的,數(shù)據(jù)結(jié)構(gòu)的考試有它的特點(diǎn),考過程考試了,大家應(yīng)該都發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)其實(shí)不要求你把整個(gè)算法背出來,它注重考察你的理解,那么怎么考察呢?其實(shí)也就是兩種方式吧,一種就是用實(shí)例,就是給你一個(gè)例子,要你用某個(gè)算法運(yùn)行出結(jié)果,我想這個(gè)期末考試的時(shí)候仍然會(huì)有很多這樣的題目,比如排序那塊就很好出這樣的題目,要復(fù)習(xí)這種題目我覺得很簡單,就是每個(gè)算法都自己用例子去實(shí)踐一下,以不變應(yīng)萬變,我期中復(fù)習(xí)的時(shí)候就是這樣去做的,而且考試之前我就覺得那個(gè)并查集的題目就很有可能會(huì)考,于是就自己出了幾個(gè)例子,做了一下。另外一種考察方式就是算法填空和算法改錯(cuò),可能有一些同學(xué)覺得這種題目很難,其實(shí)我們首先可以確定這兩種題目肯定是與書上算法有關(guān)系的,只要理解了書上的算法就可以了,有人覺得看完書以后什么都懂了,而且要默也默得出來,其實(shí)不是這樣的,算法改錯(cuò)和填空主要是考察的細(xì)微處,雖然你覺得你默得出來,那是能夠默出算法的主體部分,很多細(xì)微的地方你就會(huì)很容易忽略。我想大家考過期中考以后應(yīng)該都有這種感覺吧?那要怎樣解決這種問題呢? 我覺得有兩種方法,一種就是自己去編程實(shí)現(xiàn),這種方法比較有意義,還能夠提高編程水平,另外一種就是用實(shí)例分析算法的每句話,我認(rèn)為這種方法是最有效的。

      然后還有一種題目,就是最后的寫算法的題目,我覺得這種題目還是很好解決的,只要是能夠自己做出作業(yè)的,基本上都會(huì)很容易做出來,這也是為什么我前面覺得平時(shí)做作業(yè)應(yīng)該自己獨(dú)立思考的原因,同時(shí)做這種題目千萬要小心,尤其是題目簡單的時(shí)候,那肯定會(huì)有一些小地方要考慮清楚,一不小心就會(huì)被扣掉很多分,這樣很不值。

      我覺得考試的時(shí)候沒有太多要講的,只要復(fù)習(xí)好了,考試的時(shí)候細(xì)心一點(diǎn)就可以了,然后就是做一個(gè)題目開始就要盡量保證正確,如果覺得留在那里等后面做完了再來檢查,這樣錯(cuò)誤還是很有可能檢查不出來,我期中考試的時(shí)候就基本上沒有檢查,因?yàn)槲易雒總€(gè)題目都是確保正確,用的時(shí)間也挺多的,然后也覺得沒有檢查的必要了。

      三、對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》課程教學(xué)的建議

      1、建議在上課過程中加大隨堂練習(xí)的分量,以便學(xué)生能當(dāng)堂消化課堂上學(xué)習(xí)的知識(shí),也便于及時(shí)了解學(xué)生對(duì)知識(shí)點(diǎn)的掌握情況,同時(shí)有助于學(xué)生保持良好的精神狀態(tài)。

      2、建議在課時(shí)允許的情況下,增加習(xí)題課的分量,通過課堂的習(xí)題講解,加深對(duì)知識(shí)點(diǎn)的掌握,同時(shí)對(duì)各知識(shí)點(diǎn)的運(yùn)用有一個(gè)更為直觀和具體的認(rèn)識(shí)。

      3、要更加重視實(shí)驗(yàn)的重要性。

      以上便是我對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》這門課的學(xué)習(xí)總結(jié),我會(huì)抓緊時(shí)間將沒有吃透的知識(shí)點(diǎn)補(bǔ)齊。今后我仍然會(huì)繼續(xù)學(xué)習(xí),克服學(xué)習(xí)中遇到的難關(guān),在打牢基礎(chǔ)的前提下向更深入的層面邁進(jìn)!

      第五篇:數(shù)據(jù)結(jié)構(gòu)與算法教學(xué)大綱

      《數(shù)據(jù)結(jié)構(gòu)》教學(xué)大綱

      一、課程基本信息

      課程名稱:數(shù)據(jù)結(jié)構(gòu)

      總學(xué)時(shí):64(理論課內(nèi)學(xué)時(shí)48,上機(jī)課內(nèi)學(xué)時(shí)16)課程設(shè)計(jì):24 課程類型:必修課

      考試形式:半開卷考試 講課對(duì)象:計(jì)算機(jī)本科

      建議教材:《數(shù)據(jù)結(jié)構(gòu)》(C語言版)陳明 編著 清華大學(xué)出版社

      課程簡介:數(shù)據(jù)結(jié)構(gòu)課程介紹如何組織各種數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)、傳遞和轉(zhuǎn)換。內(nèi)容包括:數(shù)組、鏈接表、棧和隊(duì)列、串、樹與森林、圖、排序、查找、索引與散列結(jié)構(gòu)等。課程以結(jié)構(gòu)化程序設(shè)計(jì)語言C語言作為算法的描述工具,強(qiáng)化數(shù)據(jù)結(jié)構(gòu)基本知識(shí)和結(jié)構(gòu)化程序設(shè)計(jì)基本能力的雙基訓(xùn)練。為后續(xù)計(jì)算機(jī)專業(yè)課程的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。

      二、課程的教學(xué)目標(biāo)

      “數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)相關(guān)專業(yè)的一門重要專業(yè)基礎(chǔ)課,是計(jì)算機(jī)學(xué)科的公認(rèn)主干課。課程內(nèi)容由數(shù)據(jù)結(jié)構(gòu)和算法分析初步兩部分組成。

      數(shù)據(jù)結(jié)構(gòu)是針對(duì)處理大量非數(shù)值性程序問題而形成的一門學(xué)科,內(nèi)涵豐富、應(yīng)用范圍廣。它既有完整的學(xué)科體系和學(xué)科深度,又有較強(qiáng)的實(shí)踐性。通過課程的學(xué)習(xí),應(yīng)使學(xué)生理解和掌握各種數(shù)據(jù)結(jié)構(gòu)(物理結(jié)構(gòu)和邏輯結(jié)構(gòu))的概念及其有關(guān)的算法;熟悉并了解目前常用數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)諸多領(lǐng)域中的基本應(yīng)用。

      算法分析強(qiáng)調(diào)最基本的算法設(shè)計(jì)技術(shù)和分析方法。要求學(xué)生從算法和數(shù)據(jù)結(jié)構(gòu)的相互依存關(guān)系中把握應(yīng)用算法設(shè)計(jì)的藝術(shù)和技能。

      經(jīng)過上機(jī)實(shí)習(xí)和課程設(shè)計(jì)的訓(xùn)練,使學(xué)生能夠編制、調(diào)試具有一定難度的中型程序;以培養(yǎng)良好的軟件工程習(xí)慣和面向?qū)ο蟮能浖季S方法。

      “數(shù)據(jù)結(jié)構(gòu)”的前序課是《離散數(shù)學(xué)》、《C語言程序設(shè)計(jì)與算法初步》。

      三、理論教學(xué)內(nèi)容的基本要求及學(xué)時(shí)分配

      1、序論(2學(xué)時(shí))學(xué)習(xí)目標(biāo):熟悉各類文件的特點(diǎn),構(gòu)造方法以及如何實(shí)現(xiàn)檢索,插入和刪除等操作。

      重點(diǎn)與難點(diǎn):本章無。

      知識(shí)點(diǎn):數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、抽象數(shù)據(jù)類型、算法及其設(shè)計(jì)原則、時(shí)間復(fù)雜度、空間復(fù)雜度。

      2、線性表(4學(xué)時(shí))

      學(xué)習(xí)目標(biāo):

      (1)了解線性表的邏輯結(jié)構(gòu)特性是數(shù)據(jù)元素之間存在著線性關(guān)系,在計(jì)算機(jī)中表示這種關(guān)系的兩類不同的存儲(chǔ)結(jié)構(gòu)是順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。用前者表示的線性表簡稱為順序表,用后者表示的線性表簡稱為鏈表;

      (2)熟練掌握這兩類存儲(chǔ)結(jié)構(gòu)的描述方法以及線性表的基本操作在這兩種存儲(chǔ)結(jié)構(gòu)上的實(shí)現(xiàn);

      (3)能夠從時(shí)間和空間復(fù)雜度的角度綜合比較線性表兩種存儲(chǔ)結(jié)構(gòu)的不同特點(diǎn)及其適用場合;

      (4)結(jié)合線性表類型的定義增強(qiáng)對(duì)抽象數(shù)據(jù)類型的理解。

      重點(diǎn)與難點(diǎn):鏈表是本章的重點(diǎn)和難點(diǎn)。扎實(shí)的指針操作和內(nèi)存動(dòng)態(tài)分配的編程技術(shù)是學(xué)好本章的基本要求,分清鏈表中指針 p 和結(jié)點(diǎn) *p 之間的對(duì)應(yīng)關(guān)系,區(qū)分鏈表中的頭結(jié)點(diǎn)、頭指針和首元結(jié)點(diǎn)的不同所指以及循環(huán)鏈表、雙向鏈表的特點(diǎn)等。

      知識(shí)點(diǎn):線性表、順序表、鏈表、有序表。

      3、棧和隊(duì)列(4學(xué)時(shí))

      學(xué)習(xí)目標(biāo):

      (1)掌握棧和隊(duì)列這兩種抽象數(shù)據(jù)類型的特點(diǎn),并能在相應(yīng)的應(yīng)用問題中正確選用它們;

      (2)熟練掌握棧類型的兩種實(shí)現(xiàn)方法;

      (3)熟練掌握循環(huán)隊(duì)列和鏈隊(duì)列的基本操作實(shí)現(xiàn)算法;(4)理解遞歸算法執(zhí)行過程中棧的狀態(tài)變化過程。

      重點(diǎn)與難點(diǎn):棧和隊(duì)列是在程序設(shè)計(jì)中被廣泛使用的兩種線性數(shù)據(jù)結(jié)構(gòu),因此本章的學(xué)習(xí)重點(diǎn)在于掌握這兩種結(jié)構(gòu)的特點(diǎn),以便能在應(yīng)用問題中正確使用。

      知識(shí)點(diǎn):順序棧、鏈棧、循環(huán)隊(duì)列、鏈隊(duì)列。

      4、串(2學(xué)時(shí))

      學(xué)習(xí)目標(biāo):(1)理解串類型定義中各基本操作的特點(diǎn),并能正確利用它們進(jìn)行串的其它操作;

      (2)理解串類型的各種存儲(chǔ)表示方法;(3)理解串匹配的各種算法。

      重點(diǎn)和難點(diǎn):相對(duì)于其它各個(gè)知識(shí)點(diǎn)而言,本章非整個(gè)課程的重點(diǎn),鑒于串已是多數(shù)高級(jí)語言中已經(jīng)實(shí)現(xiàn)的數(shù)據(jù)類型,因此本章重點(diǎn)僅在于了解串類型定義中各基本操作的定義以及串的實(shí)現(xiàn)方法,并學(xué)會(huì)利用這些基本操作來實(shí)現(xiàn)串的其它操作。本章的難點(diǎn)是理解實(shí)現(xiàn)串匹配的KMP算法的思想。

      知識(shí)點(diǎn):串的類型定義、串的存儲(chǔ)表示、串匹配、KMP算法。

      5、數(shù)組和廣義表(4學(xué)時(shí))

      學(xué)習(xí)目標(biāo):

      (1)理解數(shù)組類型的特點(diǎn)及其在高級(jí)編程語言中的存儲(chǔ)表示和實(shí)現(xiàn)方法,并掌握數(shù)組在“以行為主”的存儲(chǔ)表示中的地址計(jì)算方法;

      (2)掌握特殊矩陣的存儲(chǔ)壓縮表示方法;

      (3)理解稀疏矩陣的兩類存儲(chǔ)壓縮方法的特點(diǎn)及其適用范圍,領(lǐng)會(huì)以三元組表示稀疏矩陣時(shí)進(jìn)行矩陣運(yùn)算所采用的處理方法。

      重點(diǎn)和難點(diǎn):本章重點(diǎn)是學(xué)習(xí)數(shù)組類型的定義及其存儲(chǔ)表示。

      知識(shí)點(diǎn):數(shù)組的類型定義、數(shù)組的存儲(chǔ)表示、特殊矩陣的壓縮存儲(chǔ)表示方法、隨機(jī)稀疏矩陣的壓縮存儲(chǔ)表示方法。

      6、樹和二叉樹(8學(xué)時(shí))

      學(xué)習(xí)目標(biāo):

      (1)領(lǐng)會(huì)樹和二叉樹的類型定義,理解樹和二叉樹的結(jié)構(gòu)差別;(2)熟記二叉樹的主要特性,并掌握它們的證明方法;

      (3)熟練掌握二叉樹的各種遍歷算法,并能靈活運(yùn)用遍歷算法實(shí)現(xiàn)二叉樹的其它操作;

      (4)理解二叉樹的線索化過程以及在中序線索化樹上找給定結(jié)點(diǎn)的前驅(qū)和后繼的方法;

      (5)熟練掌握二叉樹和樹的各種存儲(chǔ)結(jié)構(gòu)及其建立的算法;(6)學(xué)會(huì)編寫實(shí)現(xiàn)樹的各種操作的算法;

      (7)了解最優(yōu)樹的特性,掌握建立最優(yōu)樹和赫夫曼編碼的方法。

      重點(diǎn)和難點(diǎn):二叉樹和樹的遍歷及其應(yīng)用是本章的學(xué)習(xí)重點(diǎn),而編寫實(shí)現(xiàn)二叉樹和樹的各種操作的遞歸算法也恰是本章的難點(diǎn)所在。

      知識(shí)點(diǎn):樹的類型定義、二叉樹的類型定義、二叉樹的存儲(chǔ)表示、二叉樹的遍歷以及其它操作的實(shí)現(xiàn)、線索二叉樹、樹和森林的存儲(chǔ)表示、樹和森林的遍歷以及其它操作的實(shí)現(xiàn)、最優(yōu)樹和赫夫曼編碼。

      7、圖(8學(xué)時(shí))

      學(xué)習(xí)目標(biāo):

      (1)領(lǐng)會(huì)圖的類型定義;

      (2)熟悉圖的各種存儲(chǔ)結(jié)構(gòu)及其構(gòu)造算法,了解各種存儲(chǔ)結(jié)構(gòu)的特點(diǎn)及其選用原則;

      (3)熟練掌握?qǐng)D的兩種遍歷算法;(4)理解各種圖的應(yīng)用問題的算法。

      重點(diǎn)和難點(diǎn):圖的應(yīng)用極為廣泛,而且圖的各種應(yīng)用問題的算法都比較經(jīng)典,因此本章重點(diǎn)在于理解各種圖的算法及其應(yīng)用場合。

      知識(shí)點(diǎn):圖的類型定義、圖的存儲(chǔ)表示、圖的深度優(yōu)先搜索遍歷和圖的廣度優(yōu)先搜索遍歷、無向網(wǎng)的最小生成樹、最短路徑、拓?fù)渑判颉㈥P(guān)鍵路徑。

      8、查找(6學(xué)時(shí))

      學(xué)習(xí)目標(biāo):

      (1)理解“查找表”的結(jié)構(gòu)特點(diǎn)以及各種表示方法的適用性;(2)熟練掌握以順序表或有序表表示靜態(tài)查找表時(shí)的查找方法;

      (3)熟悉靜態(tài)查找樹的構(gòu)造方法和查找算法,理解靜態(tài)查找樹和折半查找的關(guān)系;

      (4)熟練掌握二叉查找樹的構(gòu)造和查找方法;(5)理解二叉平衡樹的構(gòu)造過程;

      (6)熟練掌握哈希表的構(gòu)造方法,深刻理解哈希表與其它結(jié)構(gòu)的表的實(shí)質(zhì)性的差別;

      (7)掌握描述查找過程的判定樹的構(gòu)造方法,以及按定義計(jì)算各種查找方法在等概率情況下查找成功時(shí)的平均查找長度。

      重點(diǎn)和難點(diǎn):本章重點(diǎn)在于理解查找表的結(jié)構(gòu)特點(diǎn)及其各種表示方法的特點(diǎn)和適用場合。

      知識(shí)點(diǎn):順序表、有序表、索引順序表、靜態(tài)查找樹、二叉查找樹、二叉平衡樹、哈希表。

      9、內(nèi)部排序(6學(xué)時(shí))

      學(xué)習(xí)目標(biāo):

      (1)理解排序的定義和各種排序方法的特點(diǎn),并能加以靈活應(yīng)用。排序方法有不同的分類方法,基于“關(guān)鍵字間的比較”進(jìn)行排序的方法可以按排序過程所依據(jù)的不同原則分為插入排序、交換排序、選擇排序、歸并排序和計(jì)數(shù)排序等五類;

      (2)掌握各種排序方法的時(shí)間復(fù)雜度的分析方法。能從“關(guān)鍵字間的比較次數(shù)”分析排序算法的平均情況和最壞情況的時(shí)間性能。按平均時(shí)間復(fù)雜度劃分,內(nèi)部排序可分為三類:O(n2)的簡單排序方法,O(n*logn)的高效排序方法和O(d*n)的基數(shù)排序方法;

      (3)理解排序方法“穩(wěn)定”或“不穩(wěn)定”的含義,弄清楚在什么情況下要求應(yīng)用的排序方法必須是穩(wěn)定的。

      重點(diǎn)和難點(diǎn):希爾排序、快速排序、堆排序和歸并排序等高效方法是本章的學(xué)習(xí)重點(diǎn)和難點(diǎn)。

      知識(shí)點(diǎn):排序、直接插入排序、折半插入排序、表插入排序、希爾排序、起泡排序、快速排序、簡單選擇排序、堆排序、2-路歸并排序、基數(shù)排序、排序方法的綜合比較。

      10、文件(4學(xué)時(shí))

      學(xué)習(xí)目標(biāo):熟悉各類文件的特點(diǎn),構(gòu)造方法以及如何實(shí)現(xiàn)檢索,插入和刪除等操作。

      重點(diǎn)和難點(diǎn):本章重點(diǎn)在于了解各種文件的結(jié)構(gòu)特點(diǎn)及其適用場合。知識(shí)點(diǎn):順序文件、索引文件、B-樹、B+樹、索引順序文件、VSAM文件、散列文件、多關(guān)鍵字文件。

      四、實(shí)驗(yàn)教學(xué)內(nèi)容的基本要求及學(xué)時(shí)分配

      1、線性表(1學(xué)時(shí))實(shí)驗(yàn)一 順序表的應(yīng)用 實(shí)驗(yàn)二 鏈表的應(yīng)用

      要求:理解線性表的定義及其運(yùn)算;理解順序表和鏈表的定義,組織形式,結(jié)構(gòu)特征和類型說明;掌握在這兩種表上實(shí)現(xiàn)的插入,刪除和按值查找的算法;了解循環(huán)鏈表,雙(循環(huán))鏈表的結(jié)構(gòu)特點(diǎn)和在其上施加的插入,刪除等操作。

      2、棧(0.5學(xué)時(shí))實(shí)驗(yàn)三 棧的應(yīng)用

      要求:理解棧的定義,特征及在其上所定義的基本運(yùn)算;掌握在兩種存儲(chǔ)結(jié)構(gòu)上對(duì)棧所施加的基本運(yùn)算的實(shí)現(xiàn)。

      3、隊(duì)列(0.5學(xué)時(shí))實(shí)驗(yàn)四 隊(duì)列的應(yīng)用

      要求:理解隊(duì)列的定義,特征及在其上所定義的基本運(yùn)算;掌握在兩種存儲(chǔ)結(jié)構(gòu)上對(duì)隊(duì)列所施加的基本運(yùn)算的實(shí)現(xiàn)。

      4、串(0.5學(xué)時(shí))實(shí)驗(yàn)五 串的應(yīng)用

      要求:了解串的定義;理解和領(lǐng)會(huì)串的存儲(chǔ)方式;掌握常用的串運(yùn)算。

      5、數(shù)組和廣義表(0.5學(xué)時(shí))實(shí)驗(yàn)六 稀疏矩陣的應(yīng)用

      要求:理解多維數(shù)組的結(jié)構(gòu)特點(diǎn)和在內(nèi)存中的兩種順序存儲(chǔ)方式;理解并掌握矩陣和特殊矩陣元素在存儲(chǔ)區(qū)中地址的計(jì)算;領(lǐng)會(huì)稀疏矩陣的壓縮方式和簡單運(yùn)算;了解廣義表的定義和基本運(yùn)算。

      6、樹與二叉樹(4學(xué)時(shí))實(shí)驗(yàn)七 樹與二叉樹的應(yīng)用

      要求:理解樹的定義,術(shù)語;領(lǐng)會(huì)并掌握樹的各種存儲(chǔ)結(jié)構(gòu);熟練掌握森林與二叉樹間的相互轉(zhuǎn)換;領(lǐng)會(huì)樹和森林的遍歷;了解樹的簡單應(yīng)用。深刻理解二叉樹的定義,性質(zhì)及其存儲(chǔ)方法;熟練掌握二叉樹的二叉鏈表存儲(chǔ)方式,結(jié)點(diǎn)結(jié)構(gòu)和類型定義;理解并掌握二叉樹的三種遍歷算法;掌握二叉樹的線索化方法;靈活運(yùn)用二叉樹的遍歷方法解決相關(guān)的應(yīng)用問題。

      7、圖(3學(xué)時(shí))實(shí)驗(yàn)八 圖的應(yīng)用

      要求:理解圖的基本概念及術(shù)語;掌握?qǐng)D的兩種存儲(chǔ)結(jié)構(gòu)(鄰接矩陣和鄰接表)的表示方法;熟練掌握?qǐng)D的兩種遍歷(深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷)的算法思想,步驟,并能列出在兩種存儲(chǔ)結(jié)構(gòu)上按上述兩種遍歷算法得到的序列;理解最小生成樹的概念,能按Prim算法構(gòu)造最小生成樹;領(lǐng)會(huì)并掌握拓?fù)渑判颍P(guān)鍵路徑,最短路徑的算法思想。

      8、查找(3學(xué)時(shí))實(shí)驗(yàn)九 順序查找 實(shí)驗(yàn)十 折半查找 實(shí)驗(yàn)十一 哈希表的應(yīng)用 實(shí)驗(yàn)十二 二叉排序樹的綜合練習(xí)要求:了解查找的基本思想及查找成功和不成功的概念;掌握在順序表,有序表,索引表,散列表等上的查找方法和算法,并能求出相應(yīng)的平均查找長度;理解并掌握二叉排序樹,平衡二叉樹B-樹的各種算法。

      9、排序(3學(xué)時(shí))實(shí)驗(yàn)十三 插入排序 實(shí)驗(yàn)十四 選擇排序 實(shí)驗(yàn)十五 排序綜合練習(xí)

      要求:領(lǐng)會(huì)排序的基本思想和基本概念;理解并掌握插入排序,冒泡排序,快速排序,直接選擇排序,堆排序,歸并排序和基數(shù)排序的基本思想,步驟,算法及時(shí)空效率分析;了解外排序的定義和基本方法。

      五、大綱說明

      1、課堂講述的論題只是核心或有特色的知識(shí)內(nèi)容,還有相當(dāng)數(shù)量的篇章內(nèi)容留給學(xué)生自學(xué),所確定的自學(xué)部分內(nèi)容亦屬考查范圍。

      2、“數(shù)據(jù)結(jié)構(gòu)”課注重上機(jī)訓(xùn)練,所有作業(yè)都必須配有規(guī)范的文檔。上機(jī)訓(xùn)練由平時(shí)的上機(jī)訓(xùn)練和小學(xué)期的實(shí)訓(xùn)課程設(shè)計(jì)兩部分組成。

      3、課內(nèi)學(xué)時(shí)安排說明:前8周每周4學(xué)時(shí)全為理論課,從第9周開始理論和上機(jī)為1:1,也即2學(xué)時(shí)理論,2學(xué)時(shí)上機(jī)訓(xùn)練。

      4、本課強(qiáng)調(diào)能力的培養(yǎng),期末采用半開卷考試(允許同學(xué)攜帶一頁A4紙的總結(jié)資料)。本課成績由平時(shí)作業(yè)、上機(jī)成績(30%)和期末考試(70%)合成得到,有獨(dú)到見解的作業(yè)予以適當(dāng)加分。

      5、主要參考書:

      [1]《數(shù)據(jù)結(jié)構(gòu)與算法教程》鄒永林 周蓓 唐曉陽 楊劍勇 編著 機(jī)械工業(yè)出版社

      [2]《數(shù)據(jù)結(jié)構(gòu)(C語言版)》(含CD)嚴(yán)蔚敏 吳為民 編著 清華大學(xué)出版社

      [3]《數(shù)據(jù)結(jié)構(gòu)習(xí)題集(C語言版)》嚴(yán)蔚敏 編著 清華大學(xué)出版社

      [4]《數(shù)據(jù)結(jié)構(gòu)習(xí)題解析與實(shí)訓(xùn)》張世和 編著 清華大學(xué)出版社

      下載PHP 程序員學(xué)數(shù)據(jù)結(jié)構(gòu)與算法之《?!穡ord格式文檔
      下載PHP 程序員學(xué)數(shù)據(jù)結(jié)構(gòu)與算法之《棧》.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)據(jù)結(jié)構(gòu)與算法總結(jié)

        《數(shù)據(jù)結(jié)構(gòu)與算法》課程學(xué)習(xí)總結(jié)報(bào)告 070401301507計(jì)本(3)班張浩 本學(xué)期開設(shè)的《數(shù)據(jù)結(jié)構(gòu)與算法》課程已經(jīng)告一段落,現(xiàn)就其知識(shí)點(diǎn)及其掌握情況、學(xué)習(xí)體會(huì)以及對(duì)該門課程的教學(xué)......

        算法與數(shù)據(jù)結(jié)構(gòu)總結(jié)

        算法與數(shù)據(jù)結(jié)構(gòu)總結(jié) 算法與數(shù)據(jù)結(jié)構(gòu)這一門課程,就是描述了數(shù)據(jù)的邏輯結(jié)構(gòu),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),以及數(shù)據(jù)的運(yùn)算集合在計(jì)算機(jī)中的運(yùn)用和體現(xiàn)。數(shù)據(jù)的邏輯結(jié)構(gòu)就是數(shù)據(jù)與數(shù)據(jù)之間的邏......

        算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)

        金陵科技學(xué)院實(shí)驗(yàn)報(bào)告 學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè) 課程名稱: 學(xué)生學(xué)號(hào): 所屬院部: (理工類) 算法與數(shù)據(jù)結(jié)構(gòu) 專業(yè)班級(jí): 13網(wǎng)絡(luò)工程 1305106009 學(xué)生姓名: 陳韜 網(wǎng)絡(luò)與通信工程學(xué)院 指......

        數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析

        數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析、計(jì)算機(jī)網(wǎng)絡(luò)、計(jì)算機(jī)組成原理、操作系統(tǒng)原理、編譯原理、數(shù)據(jù)庫原理及應(yīng)用、軟件工程、軟件測試等計(jì)算機(jī)基礎(chǔ)理論課程; 網(wǎng)頁制作、程序設(shè)計(jì)Java、JSP......

        數(shù)據(jù)結(jié)構(gòu)與算法課程總結(jié)[模版]

        數(shù)據(jù)結(jié)構(gòu)與算法課程學(xué)習(xí)總結(jié)報(bào)告 11計(jì)本一班 許雪松 1104013018 數(shù)據(jù)結(jié)構(gòu)與算法是計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),它不僅是計(jì)算機(jī)科學(xué)的核心課程,而且也已經(jīng)成為其他理工專......

        《數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)》任務(wù)書2014

        2014/2015學(xué)年第一學(xué)期 《數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)》任務(wù)書 一、課程設(shè)計(jì)目的 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)是《數(shù)據(jù)結(jié)構(gòu)與算法》課程教學(xué)必不可缺的一個(gè)重要環(huán)節(jié),它可加深學(xué)生對(duì)該......

        算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書

        北 京 郵 電 大 學(xué) 計(jì) 算 機(jī) 科 學(xué) 與 技 術(shù) 學(xué) 院 算 法 與 數(shù) 據(jù) 結(jié) 構(gòu) 實(shí) 驗(yàn) 指 導(dǎo) 書 楊俊、徐塞虹、漆濤 編著 2006年9月 1 算法與數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)指導(dǎo)書 目錄......

        算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)

        金陵科技學(xué)院實(shí)驗(yàn)報(bào)告 學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè) 課程名稱: 學(xué)生學(xué)號(hào): 所屬院部: (理工類) 算法與數(shù)據(jù)結(jié)構(gòu) 專業(yè)班級(jí): 14計(jì)單(2) 1413201007 學(xué)生姓名: 毛卓 計(jì)算機(jī)工程學(xué)院 指導(dǎo)教師:......