洛谷日記 Day 6

2021-09-25 01:30:32 字數 2034 閱讀 6548

這題涉及大量的插入、刪除操作,一開始想使用簡單的陣列模擬,但是後面涉及插入和刪除操作,就徹底放棄了這個念頭,於是乎決定使用雙端迴圈鍊錶去解決這題。

需要注意的是文中提及到的front指標和front結點;next指標和next結點的區別,這裡提一下,在下面的閱讀中請注意區別。

next結點和next指標的區別:是指當前某一節點k的指向的下乙個結點,具有實際意義的指標變數,而next指標為當前結點k的乙個指標,僅表示指向下一節點的位址。 結點構造,乙個整型資料 no 表示當前結點的編號,另兩個 front 和 next 指標分別指向當前結點的前乙個結點和後乙個結點。

struct node;
需要注意的是結點的插入,將i結點插入到k結點的前乙個結點。先將k結點與front結點分離,即front結點的next指標指向i結點(i),然後將i結點的front指標指向que[k]的front結點指向k的front結點(ii),將k結點的front指標指向i結點(iii),最後將i結點的next指標指向k結點(iv)注:請嚴格遵守i、ii必須在iii之前,iv的順序不存在限制。

que[k].front->next=&que[i];//i

que[i].front=que[k].front;//ii

que[k].front=&que[i];//iii

que[i].next=&que[k];//iv

,將i結點插入k結點的後乙個結點插入步驟參考將i結點插入k結點之前的操作,只是將front指標/結點變為next指標/結點。順序規則相同。

que[k].next->front=&que[i];//i

que[i].next=que[k].next;//ii

que[i].front=&que[k];//iii

que[k].next=&que[i];//iv

刪除結點操作:需要將當前結點的front結點和next結點相互連線在一起,並將k結點的front和next指標指向null值。具體操作為:

將k結點的front結點的next指標指向k結點的next結點;

將k結點的next結點的front指標指向k的front結點。

將k結點的front指標和next指標指向null。

que[k].front->next=que[k].next;

que[k].next->front=que[k].front;

que[k].front=que[k].next=null;

#includeusing namespace std;

const int maxn=1e6+10;//最大資料規模

//雙向鍊錶結點

struct node;

node que[maxn];//雙向鏈結點表陣列

bool visit[maxn];//訪問元素陣列

int main()

//將1號結點得前結點指標、next指標都指向que結點

que[1].front=que[1].next=&que[1];

int p,k;

int head=1;//head表示標記頭結點位置

for(int i=2;i<=n;i++)else if(p==1)

} cin>>m;//輸入m次刪除結點

for(int i=0;i>k;//刪除結點k

if(visit[k])//如果已經刪除結點k就跳過

continue;

visit[k]=true;//標記節點k已刪除

que[k].front->next=que[k].next;//將k結點的front結點的next指標指向k的next結點

que[k].next->front=que[k].front;//將k結點的next結點的front指標指k的front結點

que[k].front=que[k].next=null;//將k的front指標和k的next指標指向null

} k=head;//k標記為當前結點的下標

coutwhile(k!=head)

cout<

洛谷打卡 Day6

題目描述 某國法律規定,只要乙個由 n m個小方塊組成的旗幟符合如下規則,就是合法的國旗。毛熊 阿嚏 從最上方若干行 至少一行 的格仔全部是白色的 接下來若干行 至少一行 的格仔全部是藍色的 剩下的行 至少一行 全部是紅色的 現有乙個棋盤狀的布,分成了 n 行 m 列的格仔,每個格仔是白色藍色紅色之...

Python學習日記day6

字串型別及操作 知識點1 使用 m n k 根據步長對字串切片 m缺失表示至開頭,n缺失表示至結尾。k為步長,擷取的字串位置為m到n 1 知識點2 轉義符號 轉義符號後的字元為原始字元 知識點3 字串操作符 x y 連線兩個字串x和y n x 或 x n 複製n次字串x x in s 如果x是s的子...

CDQZ集訓DAY6 日記

又炸了。早上起來其他競賽生也走了,食堂做飯做的挺潦草,但為什麼四川燒麥的餡是公尺啊?起來看題總覺得都似曾相識。第一題打完40分暴力後想拿莫隊搞到70分,但發現能想到的莫隊維護都是nsqrt n log n的,並不能拿到分,於是先放下打第二題。第二題上來就想錯了。直接打了乙個貪心。後來想了想,為了保分...