中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

歡迎光臨中圖網 請 | 注冊
> >
21世紀高等學校計算機專業核心課程規劃教材數據結構(C語言版)(第3版)/唐國民

包郵 21世紀高等學校計算機專業核心課程規劃教材數據結構(C語言版)(第3版)/唐國民

出版社:清華大學出版社出版時間:2017-02-01
開本: 其他 頁數: 241
中 圖 價:¥33.8(8.6折) 定價  ¥39.5 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>

21世紀高等學校計算機專業核心課程規劃教材數據結構(C語言版)(第3版)/唐國民 版權信息

  • ISBN:9787302501824
  • 條形碼:9787302501824 ; 978-7-302-50182-4
  • 裝幀:一般膠版紙
  • 冊數:暫無
  • 重量:暫無
  • 所屬分類:>

21世紀高等學校計算機專業核心課程規劃教材數據結構(C語言版)(第3版)/唐國民 本書特色

本書的特色是深入淺出,注重基本理論、基本知識和基本技能,每一章的開頭都配有本章要點和本章學習目標,且思想性、科學性、啟發性貫穿于所有章節。它的教學要求是:讓學生學會分析和研究計算機加工的數據結構的特性,為應用的數據選擇恰當的邏輯結構、存儲結構及相應的算法,并初步掌握算法的時間分析和空間分析技術,在學習中訓練程序設計的能力。內容中配有大量的例題和詳盡的注釋,末尾處都配有本章小結,并配置了大量的不同類型的習題。書中自始至終使用C語言來描述算法和數據結構,各章的程序都在C-Free 4.0或Visual C++ 6.0中調試通過,以方便讀者在計算機上進行實踐,有助于理解算法的實質和基本思想。

21世紀高等學校計算機專業核心課程規劃教材數據結構(C語言版)(第3版)/唐國民 內容簡介

本書是為“數據結構”課程編寫的教材,也可以作為學習數據結構及其算法的C語言程序設計的參考書。 書中系統介紹各種常用的數據結構及它們的存儲表示,討論了基于這些數據結構的基本操作和實際的執行算法,并闡述了各種常用數據結構內涵的邏輯關系。全書共分為9章。章為概論,引入數據結構與算法的一些基本概念,是全書的綜述; 第2~7章分別介紹線性表、棧、隊列、串、多維數組、廣義表、樹、二叉樹和圖等幾種基本的數據結構; 第8章和第9章分別介紹查找和排序,它們都是數據處理時廣泛使用的技術。書中既體現了抽象數據類型的觀點,又對每個算法的具體實現給出了完整的C語言源代碼描述。 本書的特色是深入淺出,既注重理論又重視實踐,使用算法設計實例的教學方式來組織內容,重點明確、結構合理。全書配有大量的例題和詳盡的注釋,各章都有小結和不同類型的習題。書中自始至終使用C語言來描述算法和數據結構,全部程序都在CFree 3.5或Visual C++ 6.0中調試通過。 本書可作為普通高等學校計算機及相關專業本科生的教材,也可作為專科和成.人教育的教材,還可供從事計算機應用的科技人員參考。與本書配套的《數據結構實驗教程(C語言版)》也將由清華大學出版社出版。

21世紀高等學校計算機專業核心課程規劃教材數據結構(C語言版)(第3版)/唐國民 目錄


目錄




第1章概論


1.1什么是數據結構


1.1.1數據和數據元素


1.1.2數據類型與數據對象


1.1.3數據結構


1.2為什么要學習數據結構


1.2.1學習數據結構的重要性


1.2.2數據結構的應用舉例


1.3算法和算法分析


1.3.1算法的概念


1.3.2算法的描述和設計


1.3.3算法分析


本章小結


習題1


第2章線性表


2.1線性表的基本概念


2.1.1線性表的定義


2.1.2線性表的基本操作


2.2線性表的順序存儲


2.2.1順序表


2.2.2順序表的基本操作


2.2.3一個完整的例子(1)


2.3線性表的鏈式存儲


2.3.1單鏈表的基本概念


2.3.2單鏈表的基本操作


2.3.3一個完整的例子(2)


2.3.4循環鏈表


2.3.5雙向鏈表


2.3.6雙向循環鏈表


2.3.7靜態鏈表


2.4線性表順序存儲與鏈式存儲的比較


2.5線性表的應用


2.5.1約瑟夫問題


2.5.2多項式加法


2.5.3電文加密


本章小結


習題2











第3章棧和隊列


3.1棧


3.1.1棧的定義與基本操作


3.1.2順序棧的存儲結構和操作的實現


3.1.3鏈棧的存儲結構和操作的實現


3.2棧的應用


3.2.1數制轉換


3.2.2括號匹配問題


3.2.3子程序的調用


3.2.4利用一個順序棧逆置一個帶頭結點的單鏈表


3.3隊列


3.3.1隊列的定義與基本操作


3.3.2鏈隊列的存儲結構和操作的實現


3.3.3順序隊列的存儲結構和操作的實現


3.4隊列的應用


3.4.1打印楊輝三角形


3.4.2迷宮問題: 尋找一條從迷宮入口到出口的*短路徑


3.5遞歸


3.5.1遞歸的定義與實現


3.5.2遞歸消除


本章小結


習題3


第4章串


4.1串的定義和基本操作


4.1.1串的定義


4.1.2串的基本操作


4.2串的表示和實現


4.2.1串的定長順序存儲


4.2.2串的堆存儲結構


4.2.3串的塊鏈存儲結構


4.3串的模式匹配算法


4.3.1基本的模式匹配算法


4.3.2模式匹配的改進算法——KMP算法


本章小結


習題4


第5章多維數組和廣義表


5.1多維數組


5.1.1多維數組的定義


5.1.2數組的存儲結構


5.2矩陣的壓縮存儲


5.2.1特殊矩陣


5.2.2稀疏矩陣


5.3廣義表


本章小結


展開全部

21世紀高等學校計算機專業核心課程規劃教材數據結構(C語言版)(第3版)/唐國民 節選

第3章 棧 和 隊 列 本章要點  棧  棧的應用舉例  隊列  隊列的應用舉例 本章學習目標  理解棧的定義及其基本運算  掌握順序棧和鏈棧的各種操作實現  理解隊列的定義及其基本運算  掌握循環隊列和鏈隊列的各種操作實現  學會利用棧和隊列解決一些問題 3.1棧 棧和隊列是在程序設計中廣泛使用的兩種重要的數據結構。由于從數據結構角度看,棧和隊列是操作受限的線性表,因此,也可以將它們稱為限定性的線性表結構。 3.1.1棧的定義與基本操作 在日常生活中,我們會發現有許多這樣的趣事。例如,把許多書籍依次放進一個大小相當的箱子中,當我們在取書時,就得先把后放進里面的書取走,才能拿到先放入的被壓在*底層的書; 又如一疊洗凈的盤子,洗的時候總是將盤子逐個疊放在已洗好的盤子上面,而用的時候則是從上往下逐個取用,即后洗好的盤子比先洗好的盤子先被使用。這種后進先出的結構稱為棧。 1. 棧的定義 棧(stack)是一種僅允許在一端進行插入和刪除運算的線性表。棧中允許進行插入和刪除的那一端,稱為棧頂(top)。棧頂的第1個元素稱為棧頂元素。棧中不可以進行插入和刪除的那一端(線性表的表頭),稱為棧底(bottom)。在一個棧中插入新元素,即把新元素放到當前棧頂元素的上面,使其成為新的棧頂元素,這一操作稱為進棧、入棧或壓棧(push)。從一個棧中刪除一個元素,即把棧頂元素刪除掉,使其下面的元素成為新的棧頂元素,稱為出棧或退棧(pop)。例如,在棧S=(a1,a2,…,an)中,a1稱為棧底元素,an稱為棧頂元素。進棧順序為a1,a2,…,an,如圖3.1(a)所示,而出棧順序為an,an-1,…,a2,a1。 注意: 由于棧的插入和刪除操作只能在棧頂一端進行,后進棧的元素必定先出棧,所以棧又稱為后進先出(Last In First Out)的線性表(簡稱為LIFO結構)。它的這個特點可用圖3.1(b)所示的鐵路調度站形象地表示。 圖3.1棧的圖示 思考: ① 棧是什么?它與一般線性表有何不同? ② 一個棧的輸入序列是12345,若在入棧的過程中允許出棧,則棧的輸出序列43512有可能實現嗎?12345的輸出呢? 討論: 有無通用的判別原則? 有!若輸入序列是…,Pj,…,Pk,…,Pi,…(Pj 2. 棧的基本操作 定義在棧上的基本操作有: (1) InitStack(S): 構造一個空棧S。 (2) ClearStack(S): 清除棧S中的所有元素。 (3) StackEmpty(S): 判斷棧S是否為空,若為空,則返回true; 否則返回false。 (4) GetTop(S): 返回S的棧頂元素,但不移動棧頂指針。 (5) Push(S, x): 插入元素x作為新的棧頂元素(入棧操作)。 (6) Pop(S): 刪除S的棧頂元素并返回其值(出棧操作)。 由于棧是運算受限的線性表,因此線性表的存儲結構對棧也同樣適用。與線性表相似,棧也有兩種存儲表示方法,即順序存儲和鏈式存儲兩種結構。順序存儲的棧稱為順序棧,鏈式存儲的棧稱為鏈棧。 3.1.2順序棧的存儲結構和操作的實現 1. 順序棧存儲結構的定義 順序棧利用一組地址連續的存儲單元依次存放從棧底到棧頂的數據元素。在C語言中,可以用一維數組描述順序棧中數據元素的存儲區域,并預設一個數組的*大空間。棧底設置在0下標端,棧頂隨著插入和刪除元素而變化,即入棧的動作使地址向上增長(稱為“向上增長”的棧),可用一個整型變量top來指示棧頂的位置。為此,順序棧存儲結構的描述如下: #define Maxsize 100/*設順序棧的*大長度為100,可依實現情況而修改*/ typedef int datatype; typedef struct { datatype stack[Maxsize]; int top; /*棧頂指針*/ }SeqStack; /*順序棧類型定義*/ SeqStack *S; /*S為順序棧類型變量的指針*/ 由于C語言中數組下標是從0開始的,即S>stack[0]是棧底元素,而棧頂指針S>top是正向增長的,即進棧時棧頂指針S>top加1,然后把新元素放在top所指的空單元內,退棧時S>top減1,因此S>top等于-1(或S>top小于0)表示棧空,S>top等于maxsize-1表示棧滿。由此可知,對順序棧進行插入和刪除運算相當于是在順序表的表尾進行的,其時間復雜度為O(1)。一個棧的幾種狀態以及在這些狀態下棧頂指針top和棧中元素之間的關系如圖3.2所示。 圖3.2棧頂指針和棧中元素之間的關系 通過分析,我們可以得出以下結論: (1) 若top=-1,則表示棧空。 如果使棧頂指針top指向待入棧元素的位置,則入棧、出棧時,top應該如何變化?棧空、棧滿的條件又是什么? (2) 若top=maxsize-1,則表示棧滿。 如果使棧頂指針top指向待入棧元素的位置,則入棧、出棧時,top應該如何變化?棧空、棧滿的條件又是什么? 2. 順序棧的基本操作 由于順序棧的插入和刪除只在棧頂進行,因此順序棧的基本操作比順序表簡單得多。值得一提的是: 在做入棧操作前,首先要判定棧是否滿; 在做出棧操作前,又得先判定棧是否空。 1) 構造一個空棧 SeqStack *InitStack() { SeqStack *S; S=(SeqStack *)malloc(sizeof(SeqStack)); if(!S) {printf("空間不足"); return NULL;} else {S->top=-1; return S;} } 2) 取棧頂元素 datatype GetTop(SeqStack *S) {if (S->top==-1) {printf("\n棧是空的!"); return FALSE;} else return S->stack[S->top]; } 3) 入棧 SeqStack *Push(SeqStack *S,datatype x) {if(S->top==Maxsize-1) {printf("\n棧是滿的!"); return NULL; } else { S->top++; S->stack[S->top]=x; return s;} } 4) 出棧 datatype Pop( SeqStack *S) {if(S->top==-1) {printf("\nThe sequence stack is empty!"); return FALSE;} S->top--; return S->stack[S->top+1]; } 5) 判別空棧 intStackEmpty(SeqStack*S) {if(S->top==-1) return TRUE; else return FALSE; } 例3.1若增加main函數以及display函數,則可以調試上述各種棧的基本操作算法。 #define Maxsize 50 typedef int datatype; typedef struct {datatype stack[Maxsize]; int top; }SeqStack; void display(SeqStack *S) {int t; t=S->top; if(S->top==-1) printf("the stack is empty!\n"); else while(t!=-1)

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網
在線客服
主站蜘蛛池模板: 康明斯发电机,上柴柴油发电机,玉柴柴油发电机组_海南重康电力官网 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | 食品质构分析仪-氧化诱导分析仪-瞬态法导热系数仪|热冰百科 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 哈希PC1R1A,哈希CA9300,哈希SC4500-上海鑫嵩实业有限公司 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | ICP备案查询_APP备案查询_小程序备案查询 - 备案巴巴 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 茅茅虫AI论文写作助手-免费AIGC论文查重_写毕业论文降重 | 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 热镀锌槽钢|角钢|工字钢|圆钢|H型钢|扁钢|花纹板-天津千百顺钢铁贸易有限公司 | 南京泽朗生物科技有限公司 | 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 新型游乐设备,360大摆锤游乐设备「诚信厂家」-山东方鑫游乐设备 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 电子厂招聘_工厂招聘_普工招聘_小时工招聘信息平台-众立方招工网 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 氟塑料磁力泵-不锈钢离心泵-耐腐蚀化工泵厂家「皖金泵阀」 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 |