資料結構 線性表

2021-10-02 06:11:47 字數 3419 閱讀 5885

線性表——棧,佇列,鍊錶

二.佇列

三.雙端佇列

鍊錶棧(stack)(last in first out);後進先出

#include

using

namespace std;

int s[

10005];

int tot;

void

push

(int x)

void

pop(

)void

print()

void

top(

)int

main

(void

)

輸出

1

top=11

2top=21

23top=31

2top=21

top=

1

int s[

10005

],tot=0;

#define push(x) s[++tot]=x

#define pop tot--

#define size tot

#define top s[tot];

stl中的stack無法隨機訪問

#include

#include

using

namespace std;

stack<

int>s;

intmain()

puts(""

);return0;

}

p1241 括號序列

題目描述

定義如下規則序列(字串):

1.空序列是規則序列;

2.如果s是規則序列,那麼(s)和[s]也是規則序列;

3.如果a和b都是規則序列,那麼ab也是規則序列。

例如,下面的字串都是規則序列:

(),,(()),(),(),()[()]

而以下幾個則不是:

(,[,],)(,()),([()

現在,給你一些由『(』,『)』,『[』,『]』構成的序列,你要做的,是補全該括號序列,即掃瞄一遍原序列,對每乙個右括號,找到在它左邊最靠近它的左括號匹配,如果沒有就放棄。在以這種方式把原序列匹配完成後,把剩下的未匹配的括號補全。

輸入格式

輸入檔案僅一行,全部由『(』,『)』,『[』,『]』組成,沒有其他字元,長度不超過100。

輸出格式

輸出檔案也僅有一行,全部由『(』,『)』,『[』,『]』組成,沒有其他字元,把你補全後的規則序列輸出即可。

輸入輸出樣例

輸入 #1

([()

輸出 #1

()說明/提示

將前兩個左括號補全即可。

在這裡插入**片
p1449 字尾表示式

題目描述

所謂字尾表示式是指這樣的乙個表示式:式中不再引用括號,運算符號放在兩個運算物件之後,所有計算按運算符號出現的順序,嚴格地由左而右新進行(不用考慮運算子的優先順序)。

如:3*(5–2)+7對應的字尾表示式為:3.5.2.-*7.+@。』@』為表示式的結束符號。『.』為運算元的結束符號。

輸入格式

輸入:字尾表示式

輸出格式

輸出:表示式的值

輸入輸出樣例

輸入 #1

3.5.2.

-*7.+@

輸出 #1

16
說明/提示

字串長度,1000內。

佇列:first in first out先入先出

int s[

10005

],fnt,end;

#define push(x) s[++end]=x

#define pop fnt++

#define front s[fnt]

#define size end-fnt+1

題目描述

n個人(n<=100)圍成一圈,從第乙個人開始報數,數到m的人出列,再由下乙個人重新從1開始報數,數到m的人再出圈,……依次類推,直到所有的人都出圈,請輸出依次出圈人的編號.

輸入格式

n m輸出格式

出圈的編號

輸入輸出樣例

輸入 #1

10

3

輸出 #1

3 6 9 2 7 1 8 5 10 4

使用佇列來做

#include

#include

#include

using

namespace std;

queue<

int>q;

int n,k;

intmain()

else

} cout

}

公式法,求最後留下來的人

#include

using

namespace std;

typedef

long

long ll;

const ll maxn=

1e6+5;

ll n,k,cnt;

intmain()

#include

#include

using

namespace std;

deque<

int>d;

intmain()

輸出:

1101

10

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...

資料結構 線性表

線性表是最基礎的一種資料結構,這樣的資料物件包含的資料元素具有一對一的前驅後繼關係。按其邏輯儲存方式的不同可分為兩類線性表 順序表和鏈式表。其中鏈式表又可分為線性鍊錶 迴圈鍊錶和雙向鍊錶。下面分別介紹下這幾種線性表的資料結構 1.順序表 typedef struct sqlist 插入演算法 i到n...