数据结构学习官方代码
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                数据结构学习官方代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                線性表
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; /* 找到后返回的是存儲位置 */ }/* 插入 */ /*注意:在插入位置參數(shù)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; } /* 刪除 */ /*注意:在刪除位置參數(shù)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個結(jié)點 */ 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 /* 帶頭結(jié)點的插入 */ 27 /*注意:在插入位置參數(shù)P上與課程視頻有所不同,課程視頻中i是序列位序(從1開始),這里P是鏈表結(jié)點指針,在P之前插入新結(jié)點 */ 28 bool Insert( List L, ElementType X, Position P ) 29 { /* 這里默認L有頭結(jié)點 */ 30 Position tmp, pre; 31 32 /* 查找P的前一個結(jié)點 */ 33 for ( pre=L; pre&&pre->Next!=P; pre=pre->Next ) ; 34 if ( pre==NULL ) { /* P所指的結(jié)點不在L中 */ 35 printf("插入位置參數(shù)錯誤\n"); 36 return false; 37 } 38 else { /* 找到了P的前一個結(jié)點pre */ 39 /* 在P前插入新結(jié)點 */ 40 tmp = (Position)malloc(sizeof(struct LNode)); /* 申請、填裝結(jié)點 */ 41 tmp->Data = X; 42 tmp->Next = P; 43 pre->Next = tmp; 44 return true; 45 } 46 } 47 48 /* 帶頭結(jié)點的刪除 */ 49 /*注意:在刪除位置參數(shù)P上與課程視頻有所不同,課程視頻中i是序列位序(從1開始),這里P是擬刪除結(jié)點指針 */ 50 bool Delete( List L, Position P ) 51 { /* 這里默認L有頭結(jié)點 */ 52 Position tmp, pre; 53 54 /* 查找P的前一個結(jié)點 */ 55 for ( pre=L; pre&&pre->Next!=P; pre=pre->Next ) ; 56 if ( pre==NULL || P==NULL) { /* P所指的結(jié)點不在L中 */ 57 printf("刪除位置參數(shù)錯誤\n"); 58 return false; 59 } 60 else { /* 找到了P的前一個結(jié)點pre */ 61 /* 將P位置的結(jié)點刪除 */ 62 pre->Next = P->Next; 63 free(P); 64 return true; 65 } 66 } 鏈表?
轉(zhuǎn)載于:https://www.cnblogs.com/cnblogs-xiaoqi/p/11253203.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的数据结构学习官方代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: go语言按行读取文件
 - 下一篇: WPF 自定义窗口