线性表及其实现
typedef int Position;//為已定義好的數據類型創建別名為position;?
typedef struct LNode *List;//創建類型為LNode的指針List?
struct LNode {//創建數據結構;?
? ? ElementType Data[MAXSIZE];//(約定元素的數據類型為ElementType);?
? ? Position Last;
};
?
/* 初始化 */
List MakeEmpty()
{
? ? List L;
?
? ? L = (List)malloc(sizeof(struct LNode));//為結點L動態分配內存?
? ? L->Last = -1;//空間最后一個的值為-1;?
?
? ? return L;//返回長度l?
}
?
/* 查找 */
#define ERROR -1
?
Position Find( List L, ElementType X )
{
? ? Position i = 0;//從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; ??
}
總結
- 上一篇: table { border-colla
- 下一篇: 毕业设计的开始