線性表 綜合應用題

2021-10-16 12:25:42 字數 3153 閱讀 1305

設計乙個演算法,將順序表中所有元素逆置。

void

reverse

(sqlist &l)

}

設計乙個演算法,從一給定的順序表 l 中刪除下標 i ~ j ( i ≤

% \leq

≤ j,包括 i、j )的所有元素,假定 i、j 都是合法的。

void

delete

(sqlist &

l, int i, int j)

l.length -= delta;

}

有乙個順序表 l ,其元素為整型資料,設計乙個演算法,將 l 中所有小於表頭元素的整數放在前半部分,大於表頭元素的整數放在後半部分。

void

move

(sqlist &l)

while

(i < j &&

l.data[i]

< temp)

++i;

if(i < j)}l

.data[i]

= temp;

}

有乙個遞增非空單鏈表,設計乙個演算法刪除值域重複的結點。例如,經過刪除後變成。

vodi delsl1

(lnode *l)

else

p = p-

>next;

}}

設計乙個演算法刪除單鏈表 l(有頭結點)中的乙個最小值結點。

void

delminnode

(lnode *l)

pre = p;

p = p-

>next;

} minpre-

>next = minp-

>next;

free

(minp)

;}

有乙個線性表,採用帶頭結點的單鏈表 l 來儲存。設計乙個演算法將其逆置。要求不能建立新結點,只能通過表中已有結點的重新組合來完成。

void

reversel

(lnode *l)

}

設計乙個演算法,將乙個頭結點為 a 的單鏈表(其資料域為整數)分解成兩個單鏈表 a 和 b ,使得 a 鍊錶只含有原來鍊錶中 data 域為奇數的結點,而 b 鍊錶只含有原煉表中 data 域為偶數的結點,且保持原來的相對順序。

void

splist2

(lnode *

a, lnode *b)

else

p = p-

>next;

}}

有 n 個個位正整數存放在 int 型陣列 a[0,…,n-1]中,n為已定義的常量且n ≤

\leq

≤ 9,陣列 a的長度為n,另給乙個 int 型變數 i ,要求只用上述變數(a[0]~a[n-1]與i,這n+1個整型變數)寫乙個演算法,找出這n個整數中的最小者,並且要求不能破壞陣列 a中的資料。

void

findmin

(int a

, int &i)

i = i %10;

}}

寫乙個函式,逆序列印單鏈表中的資料,假設指標 l 指向了單鏈表的開始結點。

void

reprint

(lnode *l)

}

設有兩個用有序鍊錶表示的集合 a 和 b,設計乙個演算法,判斷它們是否相等。

#include 

using namespace std;

typedef struct lnode

lnode;

int isequal

(lnode*

a, lnode*b)

else

return0;

}if(p !=

null

&& q !=

null

)return0;

else

return1;

}void

createlist

(lnode *

&head, int arr[

], int n)

}int main()

; int b=

; lnode*a;

lnode*b;

createlist(a

, a,5)

;createlist(b

, b,5)

; cout<<

isequal(a

,b)

}

設 a=(a1,a2,···,am)和 b=(b1,b2,···,bn)均為順序表,a』 和 b』 分別是除去最大公共字首後的子表。例如,a=(b,e,i,j,i,n,g),b=(b,e,i,f,a,n,g),則兩者的最大公共字首為b,e,i,在兩個順序表中除去最大公共字首後的子表分別為 a』=(j,i,n,g),b』=(f,a,n,g)。若 a』 = b』 =空表,則 a=b。若 a』=空表且 b』≠

\neq

​=空表,或兩者均不為空且 a『的第乙個元素值小於 b』 的第乙個元素值,則 ab。所有表中元素均為 float型,試編寫乙個函式,根據上述方法比較 a 和 b 的大小。

int compare

(float a

, int an, float b

, int bn)

if(i >= an && i >= bn)

return0;

elseif(

(i >= an && i < bn)||a

[i]<

b[i]

)return-1

;else

return1;

}

鍵盤輸入n個英文本母,輸入格式為n、c1、c2、···、cn,其中n表示字母的個數。請程式設計用這些輸入資料建立乙個單鏈表,並要求將字母不重複地存入鍊錶。

void

createlinknosameelem

(lnode *

&head)

if(p ==

null)}

}

王道資料結構 線性表的順序表示應用題2

從有序順序表中刪除所有其值重複的元素,使表中的所有元素的值均不同。用雙指標演算法,初始時將第乙個元素視為非重複的有序表,之後依次判斷後面的元素是否與前面非重複的有序表的最後乙個元素相同,若相同的話,則繼續向後判斷,若不同的話,則插入到前面的非重複有序表的最後,直到判斷到表尾結束。bool delet...

資料結構考研學習筆記之線性表應用題(二)

這道題筆者看到時比較蒙,經過一番努力才弄明白,現在將整理的思想寫出來 方法 都在第乙個鍊錶上順序遍歷每個結點,每遍歷乙個結點,在第二個鍊錶上順序遍歷所有結點,若找到兩個相同結點,則找到它們的公眾結點,該演算法時間複雜度o len1len2 思想 那麼如何判斷兩個單向鍊錶有沒有公共點呢?如果兩個鍊錶有...

王道資料結構 線性表的鏈式表示應用題1

設計乙個遞迴演算法,刪除不帶頭結點的單鏈表 l 的所有值 為 x的結點 終止條件 若l為空表,則返回。遞迴主體 若 l data x,刪除此結點,繼續遞迴下乙個結點。若 l data x 遞迴下乙個結點。演算法需要解除乙個遞迴工作棧,深度為 o n 時間複雜度為 o n void del x lin...