王道資料結構線性表課後習題

2021-08-20 08:47:41 字數 1231 閱讀 2765

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;

}

資料結構 王道課後題 線性表(1)

1.從順序表中是刪除最小元素,並返回該元素的值空出位置由最後一位填充。bool delete min sqlist l,elemtype value value l.data 0 int pos 0 for int i 0 i2.將順序表l所有元素逆置,並要求演算法空間複雜度為o 1 由於限制了空間...

資料結構習題之線性表

第二章 線性表 一.基本要求 重點 難點 本章主要介紹線性表的邏輯結構和各種儲存表示方法,以及定義在邏輯結構上的各種基本運算及其在儲存結構上怎樣實現這些基本演算法。本章的重點是熟練掌握順序表 即線性表的順序儲存 和單鏈表上實現各種基本演算法以及相關的時間複雜度分析。難點是可以使用本章所學到的基本知識...

王道資料結構課後習題 P018

3.長度為l的順序表,編寫乙個時間複雜度為o n 空間複雜度為o 1 的演算法,該演算法刪除線性表中所有值為x的元素。一看就是典型的雙指標問題,於是我寫 如下 for i 0,j i 1 jif a j x else if a i x a i a j 這部分 是有問題的,如果出現在第一位的話就無法解...