c语言建立动态链表ppt,C语言链表讲解.ppt
第十一章 鏈表;例:跳馬。依下圖將每一步跳馬之后的位置(x,y)放到一個“結點”里,再用“鏈子穿起來”,形成一條鏈,相鄰兩結點間用一個指針將兩者連到一起。;依上圖有7個結點;11.7 用指針處理鏈表;1249;鏈表中結點的定義;鏈表的基本操作;(4)刪除操作是指,刪除結點ki,使線性表的長度減1,且ki-1、ki和ki+1之間的邏輯關系發生如下變化:刪除前,ki是ki+1的前驅、ki-1的后繼;刪除后,ki-1成為ki+1的前驅,ki+1成為ki-1的后繼.(5)打印輸出;一個指針類型的成員既可指向其它類型的結構體數據,也可以指向自己所在的結構體類型的數據;11.7.2 簡單鏈表; 11.7.3 處理動態鏈表所需的函數;函數原形:void *calloc(unsigned n,unsigned size);作用:在內存動態區中分配 n個 長度為size的連續空間。函數返回值:指向分配域起始地址的指針執行失敗:返回null主要用途:為一維數組開辟動態存儲空間。n 為數組元素個數,每個元素長度為size;3. free 函數;結點的動態分配;11.7.4 建立動態鏈表;11.7.4 建立動態鏈表;圖11.14;圖11.14;圖11.15; 圖11.16;例11.8 建立一個有3名學生數據的單向動態鏈表;續;11.7.5 輸出鏈表;圖 11.18;例題 9;11.7.6 對鏈表的刪除操作;鏈表中結點刪除;圖11.19;圖11.20;圖11.20;例 題 10;11.7.7 對鏈表的插入操作; 操 作 分 析;圖11.22;圖11.22;例 題 11;5;分析:按三種情況1、第一種情況,鏈表還未建成(空鏈表),待插入結點p實際上是第一個結點。這時必然有head==null。只要讓頭指針指向 p 就可以了。語句為;6;3、第三種情況,鏈表已建成,待插入結點 p 的數據比頭結點的數據大,需要找到正確的插入位置。這時,可以借助兩個結構指針r 和 g,利用循環比較來找到正確位置。然后將結點 p 插入到鏈表中正確的位置。
參見下面的圖示;6;6;6;// 結構7.c
#include // 預編譯命令#include // 內存空間分配#define null 0// 定義空指針常量#define LEN sizeof(struct numST)// 定義常量,表示結構長度
struct numST// 結構聲明{int num;// 整型數struct numST *next;// numST結構指針};;// 被調用函數insert(),兩個形參分別表示鏈表和待插入的結點void insert (struct numST **phead, struct numST *p){// 函數體開始struct numST *q,*r;// 定義結構指針q,rif ((*phead)==null)// 第一種情況,鏈表為空{*phead = p;// 鏈表頭指向preturn;// 完成插入操作,返回}else// 鏈表不為空{// 第二種情況,p結點num值小于鏈表頭結點的num值if ( (*phead)->num > p->num){ // 將p結點插到鏈表頭部 p->next = *phead;// 將p的next指針指向鏈表頭(*phead) *phead = p;// 將鏈表頭賦值為p return;// 返回};// 第三種情況,循環查找正確位置r = *phead;// r賦值為鏈表頭q = (*phead)->next;// q賦值為鏈表的下一個結點while (q!=null) // 利用循環查找正確位置{// 判斷當前結點num是否小于p結點的numif (q->num < p->num){r = q;// r賦值為q,即指向q所指的結點q = q->next;// q指向鏈表中相鄰的下一個結點}else// 找到了正確的位置break;// 退出循環}
// 將p結點插入正確的位置r->next = p;p->next = q;}};// 被調用函數,形參為ST結構指針,用于輸出鏈表內容void print(struct numST *head) {int k
總結
以上是生活随笔為你收集整理的c语言建立动态链表ppt,C语言链表讲解.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python环境变量的配置 alias_
- 下一篇: 嵌入式linux镜像,使用Openemb