牛客网刷题知识汇总3
typedef struct
char flag[3];
short value;
} sampleStruct;
union
{
char flag[3];
short value;
} sampleUnion;
假設(shè)?sizeof(char)=1,sizeof(short)=2,那么sizeof(sampleStruct) = 6?, sizeof(sampleUnion) = 4
結(jié)構(gòu)體?
字符型占用1字節(jié),不需要字節(jié)對齊? short占用2字節(jié),需要兩字節(jié)對齊? 所以sizeof(sampleStruct) = 3 *(1字節(jié)) + (1個補(bǔ)齊字節(jié)) + 1*(2字節(jié)) = 6? 聯(lián)合體 占用大小采用成員最大長度的對齊,最大長度是short的2字節(jié) 但?char flag[3]需要3個字節(jié) 所以?sizeof(sampleUnion) =?2*(2字節(jié)) = 4 對Union結(jié)構(gòu)體,sizeof的取值不僅考慮sizeof最大的成員,還要考慮對齊字節(jié),對齊字節(jié)的取值是取成員類型字節(jié)最大值與指定對齊字節(jié)(32位機(jī)器默認(rèn)是4,64位機(jī)器默認(rèn)是8)兩者中的較小值,本題中成員類型最大值為short,2,與指定對齊字節(jié)4比較取2,所以要2字節(jié)對齊,如果去掉short變量,則取char的1字節(jié)對齊,結(jié)果為3文章轉(zhuǎn)載自 (www.slyar.com)
KMP 算法我們有寫好的函數(shù)幫我們計算 Next 數(shù)組的值和 Nextval 數(shù)組的值,但是如果是考試,那就只能自己來手算這兩個數(shù)組了,這里分享一下我的計算方法吧。
計算前綴 Next[i] 的值:
我們令 next[0] = -1 。從 next[1] 開始,每求一個字符的 next 值,就看它前面是否有一個最長的"字符串"和從第一個字符開始的"字符串"相等(需要注意的是,這2個"字符串"不能是同一個"字符串")。如果一個都沒有,這個字符的 next 值就是0;如果有,就看它有多長,這個字符的 next 值就是它的長度。
計算修正后的 Nextval[i] 值:
我們令 nextval[0] = -1。從 nextval[1] 開始,如果某位(字符)與它 next 值指向的位(字符)相同,則該位的 nextval 值就是指向位的 nextval 值(nextval[i] = nextval[ next[i] ]);如果不同,則該位的 nextval 值就是它自己的 next 值(nextvalue[i] = next[i])。
舉個例子:
計算前綴 Next[i] 的值:
next[0] = -1;定值。
next[1] = 0;s[1]前面沒有重復(fù)子串。
next[2] = 0;s[2]前面沒有重復(fù)子串。
next[3] = 0;s[3]前面沒有重復(fù)子串。
next[4] = 1;s[4]前面有重復(fù)子串s[0] = 'a'和s[3] = 'a'。
next[5] = 2;s[5]前面有重復(fù)子串s[01] = 'ab'和s[34] = 'ab'。
next[6] = 3;s[6]前面有重復(fù)子串s[012] = 'abc'和s[345] = 'abc'。
next[7] = 4;s[7]前面有重復(fù)子串s[0123] = 'abca'和s[3456] = 'abca'。
計算修正后的 Nextval[i] 值:
nextval[0] = -1;定值。
nextval[1] = 0;s[1] != s[0],nextval[1] = next[1] = 0。
nextval[2] = 0;s[2] != s[0],nextval[2] = next[2] = 0。
nextval[3] = -1;s[3] == s[0],nextval[3] = nextval[0] = -1。
nextval[4] = 0;s[4] == s[1],nextval[4] = nextval[1] = 0。
nextval[5] = 0;s[5] == s[2],nextval[5] = nextval[2] = 0。
nextval[6] = -1;s[6] == s[3],nextval[6] = nextval[3] = -1。
nextval[7] = 4;s[7] != s[4],nextval[7] = next[7] = 4。
?
以下程序段完全正確的是(c)A.int *p; scanf("%d",&p);
B.int *p; scanf(“%d”,p);
C.int k, *p=&k; scanf("%d",p);D.int k, *p; *p= &k; scanf(“%d”,p);
B不對 scanf中&P是整型變量空間的地址,但P沒有初值,P的值是不確定的?tcpdump是簡單可靠網(wǎng)絡(luò)監(jiān)控的實用工具 top?顯示活動進(jìn)程方面的情況 netstat顯示網(wǎng)絡(luò)有關(guān)的信息,比如套接口使用情況、路由、接口、協(xié)議(TCP等)等 ifconfig是查看活動的網(wǎng)卡信息 靜止就緒:這個也叫做掛起就緒,是指進(jìn)程被對換到輔存時的就緒狀態(tài),是不能被直接調(diào)度的狀態(tài),只有當(dāng)主存中沒有活躍就緒態(tài)進(jìn)程,或者是掛起就緒態(tài)進(jìn)程具有更高的優(yōu)先級,系統(tǒng)將把掛起就緒態(tài)進(jìn)程調(diào)回主存并轉(zhuǎn)換為活躍就緒。 活動就緒:進(jìn)程在主存并且可被調(diào)度的狀態(tài)。 靜止睡眠(阻塞):是指進(jìn)程對換到輔存時的阻塞狀態(tài),一旦等待的事件產(chǎn)生便進(jìn)入靜止就緒狀態(tài)。 活動睡眠(阻塞):是指進(jìn)程已在主存,一旦等待的事件產(chǎn)生便進(jìn)入活躍就緒狀態(tài)。 正在執(zhí)行的進(jìn)程由于其時間片用完被暫停執(zhí)行,此時進(jìn)程應(yīng)從執(zhí)行狀態(tài)變?yōu)?strong>活動就緒狀態(tài); 處于靜止睡眠狀態(tài)的進(jìn)程,在進(jìn)程等待的事件出現(xiàn)后,應(yīng)變?yōu)殪o止就緒狀態(tài); 若進(jìn)程正處于執(zhí)行狀態(tài)時,因終端的請求而暫停下來以便研究其運(yùn)行情況,這時進(jìn)程應(yīng)轉(zhuǎn)變?yōu)殪o止就緒狀態(tài);若進(jìn)程已處于睡眠狀態(tài),則此時應(yīng)轉(zhuǎn)變?yōu)殪o止睡眠狀態(tài)。 先序序列為a,b,c,d 的不同二叉樹的個數(shù)是?()?。 根據(jù)二叉樹前序遍歷和中序遍歷的遞歸算法中遞歸工作棧的狀態(tài)變化得出:前序序列和中序序列的關(guān)系相當(dāng)于以前序序列為入棧次序,以中序序列為出棧次序。因為前序序列和中序序列可以唯一地確定一棵二叉樹,所以題意相當(dāng)于“以序列?a,b,c,d?為入棧次序,則出棧序列的個數(shù)為?”,對于?n?個不同元素進(jìn)棧,出棧序列的個數(shù)為?=14?。(卡特蘭數(shù)) 結(jié)構(gòu)體內(nèi)存對齊規(guī)則(請記住三條內(nèi)存規(guī)則(在沒有#pragam pack宏的情況下)
構(gòu)造函數(shù)和析構(gòu)函數(shù)聲明定義的時候,都是無類型的,不能添加 void.
結(jié)構(gòu)體所占用的內(nèi)存與其成員在結(jié)構(gòu)體中的聲明順序有關(guān),其成員的內(nèi)存對齊規(guī)則如下:
(1)每個成員分別按自己的對齊字節(jié)數(shù)和PPB(指定的對齊字節(jié)數(shù),32位機(jī)默認(rèn)為4)兩個字節(jié)數(shù)最小的那個對齊,這樣可以最小化長度。如在32bit的機(jī)器上,int的大小為4,因此int存儲的位置都是4的整數(shù)倍的位置開始存儲。
(2)復(fù)雜類型(如結(jié)構(gòu))的默認(rèn)對齊方式是它最長的成員的對齊方式,這樣在成員是復(fù)雜類型時,結(jié)構(gòu)體數(shù)組的時候,可以最小化長度。
(3)結(jié)構(gòu)體對齊后的長度必須是成員中最大的對齊參數(shù)(PPB)的整數(shù)倍,這樣在處理數(shù)組時可以保證每一項都邊界對齊。
?(4)結(jié)構(gòu)體作為數(shù)據(jù)成員的對齊規(guī)則:在一個struct中包含另一個struct,內(nèi)部struct應(yīng)該以它的最大數(shù)據(jù)成員大小的整數(shù)倍開始存儲。如 struct A 中包含 struct B, struct B 中包含數(shù)據(jù)成員 char, int, double,則 struct B 應(yīng)該以sizeof(double)=8的整數(shù)倍為起始地址。轉(zhuǎn)載于:https://www.cnblogs.com/tsunami-lj/p/6417186.html
總結(jié)
以上是生活随笔為你收集整理的牛客网刷题知识汇总3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。