演算法 模擬資料結構一

2021-10-04 07:04:51 字數 2470 閱讀 6769

//普通佇列:int q[10000],h=0,tt=-1;

//新增乙個元素a:q[++tt]=a

//刪除末尾元素tt--;

//刪除隊頭元素h++

//輸出while(tt>=h)

////普通棧:int stock[100005],t=-1;

新增乙個元素a

stock[t++]=a;

//刪除t--

//單鏈表:優點方便,缺點訪問前乙個元素需要重新訪問一遍

//這種方法本來是鄰接表的表示方法也可以表示單鏈表

//const int n=100005;

//int h[n],idex,ne[n],e[n]

//初始化:memset(h,-1,sizeof(h))

//輸入乙個數a;

//ne[idex]=h[a];

//h[a]=idex;

//e[idex++]=a;

//刪除某個節點ne[a]=ne[ne[a]];

// head儲存煉表頭,e儲存節點的值,ne儲存節點的next指標,idx表示當前用到了哪個節點

/*int head, e[n], ne[n], idx;

初始化void init()

在煉表頭插入乙個數a

void insert(int a)

將頭結點刪除,需要保證頭結點存在

void remove()

*//*2. 迴圈佇列//注意,回頭的時候會把原來的值覆蓋掉

hh 表示隊頭,tt表示隊尾的後乙個位置

int q[n], hh = 0, tt = 0;

向隊尾插入乙個數

q[tt++] = x;

if (tt == n) tt = 0;

從隊頭彈出乙個數

hh++;

if (hh == n) hh = 0;

隊頭的值

q[hh];

判斷佇列是否為空

if (hh != tt)

*/

實現乙個雙鏈表,雙鏈表初始為空,支援5種操作:

(1) 在最左側插入乙個數;

(2) 在最右側插入乙個數;

(3) 將第k個插入的數刪除;

(4) 在第k個插入的數左側插入乙個數;

(5) 在第k個插入的數右側插入乙個數

現在要對該鍊錶進行m次操作,進行完所有操作後,從左到右輸出整個鍊錶。

注意:題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的時間順序,這n個數依次為:第1個插入的數,第2個插入的數,…第n個插入的數。

輸入格式

第一行包含整數m,表示操作次數。

接下來m行,每行包含乙個操作命令,操作命令可能為以下幾種:

(1) 「l x」,表示在鍊錶的最左端插入數x。

(2) 「r x」,表示在鍊錶的最右端插入數x。

(3) 「d k」,表示將第k個插入的數刪除。

(4) 「il k x」,表示在第k個插入的數左側插入乙個數。

(5) 「ir k x」,表示在第k個插入的數右側插入乙個數。

輸出格式

共一行,將整個鍊錶從左到右輸出。

資料範圍

1≤m≤100000

所有操作保證合法。

輸入樣例:

10r 7

d 1l 3

il 2 10

d 3il 2 7

l 8r 9

il 4 7

ir 2 2

輸出樣例:

8 7 7 3 2 9

#include

#include

#include

#include

using

namespace std;

const

int n=

1e5+10;

//e表示節點的值,l[n]表示節點的左指標,r[n]表示節點的右指標,idx表示當前用到的哪個節點

int l[n]

,r[n]

,e[n]

,idx;

//初始化

void

init()

//在節點a的右邊插入乙個數x

void

insert

(int a,

int x)

//刪除節點a

void

remove

(int a)

intmain()

else

if(op==

"r")

else

if(op==

"d")

else

if(op==

"il"

)else

}for

(int i=r[0]

;i!=

1;i=r[i]

) cout

}

離散事件模擬 資料結構演算法

問題說明幾點 顧客逗留時間的計算,應該是離開事件發生的時刻減去這個顧客入隊的時間,因為顧客在中間還有等待排隊尚未辦理業務的時候 設定離開事件有如下幾種情況 這個顧客是第乙個入隊的,那麼他離開的時間就是入隊的時間和辦理業務的時間 這個顧客是在前乙個顧客離開後去辦理業務的,那麼他的離開時間就是前乙個顧客...

LRU management(模擬資料結構)

lru,作業系統中的最近最常使用演算法 include define maxn 1000005 define ll long long using namespace std struct nodecash maxn 1 模擬鍊錶 表示儲存單元 unordered mapft 雜湊表對映 把位址規模...

2020 7 4模擬 資料結構 ds

wobmaj 有 n 個資料結構,第 i 個資料結構具有工業指數 a i 和包容指數 b i b i le a i 他會不斷執行下面這個操作,直到無法再執行為止 選擇二元組 i,j 將第 i 個資料結構套進第 j 個資料結構裡,其中 a i。每個資料結構只能巢狀和被巢狀一次。求可能出現的不同局面的數...