乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      線性表—順序存儲習(xí)題1.1-1.4

       印度阿三17 2019-08-16

      1.1.從順序表中刪除具有最小值的元素(假設(shè)唯一)并由函數(shù)返回被刪除的元素的值,空出的位置由最后一個元素填補(bǔ),若順序表為空則顯示出錯信息并退出運(yùn)行 。

      bool Del_Min(SqList &L, ElemType &value) {
      	if (L.length == NULL)
      		return false;
      	value = L.data[0]; //假設(shè)0號元素的值最小
      	int pos = 0;
      	for (int i = 1;i < L.length;i  ) {
      		if (L.data[i] < value) {
      			value = L.data[i];
      			pos = i;
      		}
      	}
      	L.data[pos] = L.data[L.length - 1]; //空出的位置由最后一個元素填補(bǔ)
      	L.length--;
      	return true;
      }

      1.2.設(shè)計一個高效的算法,將順序表的所有元素逆置,要求算法的空間復(fù)雜度為O(1)

      算法思想:掃描順序表L的前半部分元素,對于元素L.data[i],將其余后半部分對應(yīng)元素L.data[L.length-i-1]進(jìn)行交換。

      void Reverse(SqList &L) {
      	ElemType temp;
      	for (int i = 0;i < L.length;i  ) {
      		temp = L.data[i];
      		L.data[i] = L.data[L.length - i - 1];
      		L.data[L.length - i - 1] = temp;
      	}
      }

      1.3長度為n的順序表L,編寫一個時間復(fù)雜度為O(n),空間復(fù)雜度為O(1)的算法,該算法刪除線性表中所有值為x的數(shù)據(jù)元素

      //解法一:用k標(biāo)記不等于x的元素,將不等于x的元素向前放到k的位置上,修改L的長度
      void del_x_1(SqList &L, ElemType x) {
      	int k = 0;
      	for (int i = 0;i < L.length;i  ) {
      		if (L.data[i] != x) {
      			L.data[k] = L.data[i];
      			k  ; //用k記錄不等于x的元素的個數(shù)
      		}
      	}
      	L.length = k; //順序表長度等于k
      }
      //解法二:用k記錄順序表中等于x的元素個數(shù),邊掃描邊統(tǒng)計k,并將不等于k的元素向前移動k個位置。
      void del_x_2(SqList &L, ElemType x) {
      	int k = 0;
      	for (int i = 0;i < L.length;i  ) {
      		if (L.data[i] == x)
      			k  ;
      		else
      			L.data[i - k] = L.data[i]; //當(dāng)前元素前移k個位置
      		i  ;
      	}
      	L.length = L.length - k; //順序表長度遞減
      }

      1.4. 從有序順序表中刪除其值在給定值s與t之間(要求s<t)的所有元素,如果s或t不合理或者順序表為空則顯示出錯信息并退出運(yùn)行

      //先找出>=s的第一個元素,再找出>t的第一個元素,將后面元素前移
      bool del_s_t2(SqList &L, ElemType s, ElemType t) {
      	int i, j;
      	if (i > 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  ) //前移,填補(bǔ)被刪除元素位置
      		L.data[i] = L.data[j];
      	L.length = i   1;
      	return true;
      }
      來源:https://www./content-4-393351.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多