1.1.從順序表中刪除具有最小值的元素(假設唯一)並由函式返回被刪除的元素的值,空出的位置由最後乙個元素填補,若順序表為空則顯示出錯資訊並退出執行 。
bool del_min(sqlist &l, elemtype &value)
} l.data[pos] = l.data[l.length - 1]; //空出的位置由最後乙個元素填補
l.length--;
return true;
}
1.2.設計乙個高效的演算法,將順序表的所有元素逆置,要求演算法的空間複雜度為o(1)
演算法思想:掃瞄順序表l的前半部分元素,對於元素l.data[i],將其餘後半部分對應元素l.data[l.length-i-1]進行交換。
void reverse(sqlist &l)
}
1.3長度為n的順序表l,編寫乙個時間複雜度為o(n),空間複雜度為o(1)的演算法,該演算法刪除線性表中所有值為x的資料元素
//解法一:用k標記不等於x的元素,將不等於x的元素向前放到k的位置上,修改l的長度
void del_x_1(sqlist &l, elemtype x)
} l.length = k; //順序表長度等於k
}
//解法二:用k記錄順序表中等於x的元素個數,邊掃瞄邊統計k,並將不等於k的元素向前移動k個位置。
void del_x_2(sqlist &l, elemtype x)
l.length = l.length - k; //順序表長度遞減
}
1.4. 從有序順序表中刪除其值在給定值s與t之間(要求s l.length || s >= t)
return false;
for (i = 0; i < l.length&&l.data[i] < s;i++); //尋找》=s的第乙個元素
if (i >= l.length) return false; //所有元素值都小於s則返回
for (j = i;j <= l.length&&l.data[j] <= t;j++); //尋找》t的第乙個元素
for (;j < l.length;i++,j++) //前移,填補被刪除元素位置
l.data[i] = l.data[j];
l.length = i + 1;
return true;
}
線性表 順序儲存習題P18 1 5 1 9
1.5.從順序表中刪除其值在給定值s與t之間,包含s和t,要求s l.length s t return false for i 0 i l.length i l.length k return true 1.6.從有序順序表中刪除所有其值重複的元素,使表中所有元素的值均不同 為有序順序表,所以重複...
線性表順序儲存
線性表順序儲存結構的建立 插入結點 刪除結點 就地逆置。include stdio.h include malloc.h typedef struct slist,list void init list 線性表初始化 void insert list s,int p 線性表插入 void delet...
線性表順序儲存
時間複雜度效率 o 1 o logn o n o nlogn o n 2 o n 3 o 2 n o n o n n 線性表順序儲存 線性表 順序儲存 include include define maxsize 1024 typedef int elementtype typedef struct...