上週的面試有點慘烈== 接著好好學習大資料跟演算法吧
演算法與資料結構:
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,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...