日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构学习官方代码

發布時間:2023/12/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构学习官方代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

線性表

typedef int Position; typedef struct LNode *List; struct LNode {ElementType Data[MAXSIZE];Position Last; };/* 初始化 */ List MakeEmpty() {List L;L = (List)malloc(sizeof(struct LNode));L->Last = -1;return L; }/* 查找 */ #define ERROR -1Position Find( List L, ElementType X ) {Position i = 0;while( i <= L->Last && L->Data[i]!= X )i++;if ( i > L->Last ) return ERROR; /* 如果沒找到,返回錯誤信息 */else return i; /* 找到后返回的是存儲位置 */ }/* 插入 */ /*注意:在插入位置參數P上與課程視頻有所不同,課程視頻中i是序列位序(從1開始),這里P是存儲下標位置(從0開始),兩者差1*/ bool Insert( List L, ElementType X, Position P ) { /* 在L的指定位置P前插入一個新元素X */Position i;if ( L->Last == MAXSIZE-1) {/* 表空間已滿,不能插入 */printf("表滿"); return false; } if ( P<0 || P>L->Last+1 ) { /* 檢查插入位置的合法性 */printf("位置不合法");return false; } for( i=L->Last; i>=P; i-- )L->Data[i+1] = L->Data[i]; /* 將位置P及以后的元素順序向后移動 */L->Data[P] = X; /* 新元素插入 */L->Last++; /* Last仍指向最后元素 */return true; } /* 刪除 */ /*注意:在刪除位置參數P上與課程視頻有所不同,課程視頻中i是序列位序(從1開始),這里P是存儲下標位置(從0開始),兩者差1*/ bool Delete( List L, Position P ) { /* 從L中刪除指定位置P的元素 */Position i;if( P<0 || P>L->Last ) { /* 檢查空表及刪除位置的合法性 */printf("位置%d不存在元素", P ); return false; }for( i=P+1; i<=L->Last; i++ )L->Data[i-1] = L->Data[i]; /* 將位置P+1及以后的元素順序向前移動 */L->Last--; /* Last仍指向最后元素 */return true; }

鏈表

1 typedef struct LNode *PtrToLNode; 2 struct LNode { 3 ElementType Data; 4 PtrToLNode Next; 5 }; 6 typedef PtrToLNode Position; 7 typedef PtrToLNode List; 8 9 /* 查找 */ 10 #define ERROR NULL 11 12 Position Find( List L, ElementType X ) 13 { 14 Position p = L; /* p指向L的第1個結點 */ 15 16 while ( p && p->Data!=X ) 17 p = p->Next; 18 19 /* 下列語句可以用 return p; 替換 */ 20 if ( p ) 21 return p; 22 else 23 return ERROR; 24 } 25 26 /* 帶頭結點的插入 */ 27 /*注意:在插入位置參數P上與課程視頻有所不同,課程視頻中i是序列位序(從1開始),這里P是鏈表結點指針,在P之前插入新結點 */ 28 bool Insert( List L, ElementType X, Position P ) 29 { /* 這里默認L有頭結點 */ 30 Position tmp, pre; 31 32 /* 查找P的前一個結點 */ 33 for ( pre=L; pre&&pre->Next!=P; pre=pre->Next ) ; 34 if ( pre==NULL ) { /* P所指的結點不在L中 */ 35 printf("插入位置參數錯誤\n"); 36 return false; 37 } 38 else { /* 找到了P的前一個結點pre */ 39 /* 在P前插入新結點 */ 40 tmp = (Position)malloc(sizeof(struct LNode)); /* 申請、填裝結點 */ 41 tmp->Data = X; 42 tmp->Next = P; 43 pre->Next = tmp; 44 return true; 45 } 46 } 47 48 /* 帶頭結點的刪除 */ 49 /*注意:在刪除位置參數P上與課程視頻有所不同,課程視頻中i是序列位序(從1開始),這里P是擬刪除結點指針 */ 50 bool Delete( List L, Position P ) 51 { /* 這里默認L有頭結點 */ 52 Position tmp, pre; 53 54 /* 查找P的前一個結點 */ 55 for ( pre=L; pre&&pre->Next!=P; pre=pre->Next ) ; 56 if ( pre==NULL || P==NULL) { /* P所指的結點不在L中 */ 57 printf("刪除位置參數錯誤\n"); 58 return false; 59 } 60 else { /* 找到了P的前一個結點pre */ 61 /* 將P位置的結點刪除 */ 62 pre->Next = P->Next; 63 free(P); 64 return true; 65 } 66 } 鏈表

?

轉載于:https://www.cnblogs.com/cnblogs-xiaoqi/p/11253203.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的数据结构学习官方代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。