20200708演算法與資料結構筆記 佇列

2021-10-07 22:05:57 字數 2738 閱讀 2638

上週的面試有點慘烈==   接著好好學習大資料跟演算法吧

演算法與資料結構:

2:線性結構

1)線性結構作為最常用的資料結構,其特點是資料元素之間存在一對一的線性關係

2)線性結構有兩種不同的儲存結構,即順序儲存結構(陣列)和鏈式儲存結構(鍊錶).順序儲存的線性表稱為順序表,順序表中的儲存元素是連續的

3)鏈式儲存的線性表稱為鍊錶,鍊錶中的儲存元素不一定是連續的,元素節點中存放資料元素以及相鄰元素的地

址資訊4)線性結構常見的有:陣列、佇列、鍊錶和棧,

非線性結構

非線性結構包括:二維陣列,多維陣列,廣義表,樹結構,圖結構

3:佇列:

1) 佇列是乙個有序列表,可以用陣列或是鍊錶來實現。

2) 遵循先入先出的原則。即:先存入佇列的資料,要先取出。後存入的要後取出

陣列模擬佇列思路

佇列本身是有序列表,若使用陣列的結構來儲存佇列的資料,則佇列陣列的宣告如下圖, 其中 maxsize 是該隊 列的最大容量。

因為佇列的輸出、輸入是分別從前後端來處理,因此需要兩個變數 front 及 rear 分別記錄佇列前後端的下標, front 會隨著資料輸出而改變,而 rear 則是隨著資料輸入而改變

public class arrayqueuedemo catch (exception e)

break;

case 'h': //檢視佇列頭的資料

try catch (exception e)

break;

case 'e': //退出

scanner.close();

loop = false;

break;

default:

break;}}

system.out.println("程式退出~~");}}

class arrayqueue

// 判斷佇列是否滿

public boolean isfull()

// 判斷佇列是否為空

public boolean isempty()

//新增資料到佇列

public void addqueue(int n)

rear++;

arr[rear] = n;

}// 獲取佇列的資料, 出佇列

public int getqueue()

front ++;// front後移

return arr[front];

}// 顯示佇列的所有資料

public void showqueue()

for(int i =0;i問題分析並優化

1) 目前陣列使用一次就不能用, 沒有達到復用的效果

2) 將這個陣列使用演算法,改進成乙個環形的佇列 取模:%

陣列模擬環形佇列

對前面的陣列模擬佇列的優化,充分利用陣列. 因此將陣列看做是乙個環形的。(通過取模的方式來實現即可)

分析說明:

1) 尾索引的下乙個為頭索引時表示佇列滿,即將佇列容量空出乙個作為約定,這個在做判斷佇列滿的

時候需要注意 (rear + 1) % maxsize == front 滿] 2) rear == front [空]

public class circlearrayqueuedemo catch (exception e)

break;

case 'h': // 檢視佇列頭的資料

try catch (exception e)

break;

case 'e': // 退出

scanner.close();

loop = false;

break;

default:

break;}}

system.out.println("程式退出~~");

}class circlearray

// 判斷佇列是否滿

public boolean isfull()

// 判斷佇列是否為空

public boolean isempty()

// 新增資料到佇列

public void addqueue(int n)

//直接將資料加入

arr[rear] = n;

//將 rear 後移, 這裡必須考慮取模

rear = (rear + 1) % maxsize;

}// 獲取佇列的資料, 出佇列

public int getqueue()

// 這裡需要分析出 front是指向佇列的第乙個元素

// 1. 先把 front 對應的值保留到乙個臨時變數

// 2. 將 front 後移, 考慮取模

// 3. 將臨時儲存的變數返回

int value = arr[front];

front = (front + 1) % maxsize;

return value;

}// 顯示佇列的所有資料

public void showqueue()

// 思路:從front開始遍歷,遍歷多少個元素

// 動腦筋

for (int i = front; i < front + size() ; i++)

}// 求出當前佇列有效資料的個數

public int size()

// 顯示佇列的頭資料, 注意不是取出資料

public int headqueue()

return arr[front];}}

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...

資料結構 資料結構與演算法01

1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...

資料結構 資料結構與演算法02

1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...