欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

c語言fist函數(shù) c語言上fib函數(shù)

求狼羊白菜過河的C語言編程題詳解。希望不要用數(shù)組解決。

按照你的要求,不使用數(shù)組。

創(chuàng)新互聯(lián)服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過10多年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進(jìn)行做網(wǎng)站、網(wǎng)站設(shè)計(jì)、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。

我的思路,起點(diǎn)貨物狼、羊、白菜,人一直在開船,通過遞歸函數(shù),每次靠岸嘗試裝卸貨方案,直到找滿足條件的方案。將可行方案存放在結(jié)構(gòu)鏈表中形成操作流水打印。

人狼羊菜存儲(chǔ)方式模擬4位2進(jìn)制,用1111表示,每位表示一個(gè)單位,1存在,0不存在。

#includestdio.h

#includemalloc.h

typedef?enum{false,true}bool;

typedef?struct?opRecord//用結(jié)構(gòu)鏈表記錄操作流水

{

int?p1_take;//p1載貨值

int?p1_goAd;//p1卸貨值

int?p2_take;//p2載貨值

int?p2_goAd;//p2卸貨值

int?cen;//遞歸層號

struct?opRecord?*next;

}OPR;

OPR?*oprHead;

OPR?*oprTail;

char?*getName(int?b);//獲取對應(yīng)名稱

int?beEaten(int?p1,int?p2);//檢查是否發(fā)生被吃事件,發(fā)生返回1,未發(fā)生返回0

int?toShip(int?*p1,int?*p2,int?*ship,bool?f);//遞歸函數(shù):上船人及任意一組合,返回狀態(tài),1:方案可行;0:方案不可行

int?getFist(int?pn);//獲取物品組合中第一個(gè)

void?addLog(int?p1_take,int?p1_goAd,int?p2_take,int?p2_goAd,int?cen);//將有效操作添加進(jìn)日志,cen相同,將視為修改覆蓋

void?printfLog();//打印操作流水

OPR?*findLogBycen(int?cen);//通過cen查找流水。?有返回節(jié)點(diǎn)指針。無返回NULL

int?count=1;

int?flag=0;//標(biāo)識(shí)變量=1成立;??=0不成立

int?cen=0;

int?main()

{

int?p1=111,ship=1000,p2=0000;//p1,p2分別表示兩岸,4位數(shù)每一位分別表示人狼羊菜,位數(shù)值1表示存在,0表示不存在

oprHead=(OPR?*)malloc(sizeof(OPR));

oprHead-next=NULL;

oprTail=NULL;

printf("河岸有人、狼、羊、白菜要過河,船每次載人及一物,為避免人上船后狼吃羊或羊吃菜\n開始生成方案:\n\n");

if(toShip(p1,p2,ship,0))

{

printf("\n開始生成結(jié)果報(bào)告:\n");

printfLog();

}

else

printf("無可行方案!!\n");

return?0;

}

void?addLog(int?p1_take,int?p1_goAd,int?p2_take,int?p2_goAd,int?cen)//將有效操作添加進(jìn)日志,cen相同,將視為修改覆蓋,

{

OPR?*oprNew=findLogBycen(cen);

if(oprNew==NULL)//通過查找。確認(rèn)無記錄,新增記錄

{

oprNew=(OPR?*)malloc(sizeof(OPR));

oprNew-p1_take=p1_take;

oprNew-p1_goAd=p1_goAd;

oprNew-p2_take=p2_take;

oprNew-p2_goAd=p2_goAd;

oprNew-cen=cen;

oprNew-next=NULL;

if(oprHead-next==NULL)

oprHead-next=oprNew;

else

oprTail-next=oprNew;

oprTail=oprNew;

}

else//查找發(fā)現(xiàn)已有記錄,修改

{

oprNew-p1_take=p1_take;

oprNew-p1_goAd=p1_goAd;

oprNew-p2_take=p2_take;

oprNew-p2_goAd=p2_goAd;

}

}

OPR?*findLogBycen(int?cen)//通過cen查找流水。?有返回節(jié)點(diǎn)指針。無返回NULL

{

OPR?*headSave=oprHead;

while(headSave-next!=NULL)

{

if(headSave-next-cen==cen)

return?headSave-next;

headSave=headSave-next;

}

return?NULL;

}

void?printfLog()//打印操作流水

{

OPR?*headSave=oprHead;

int?p1_take,p1_goAd,p2_take,p2_goAd,cen,p1TOp2,p2TOp1;

while(headSave-next!=NULL)

{

p1_take=headSave-next-p1_take;

p1_goAd=headSave-next-p1_goAd;

p2_take=headSave-next-p2_take;

p2_goAd=headSave-next-p2_goAd;

cen=headSave-next-cen;

if(p1_take0?||?p1_goAd0)

p1TOp2=1;

else

p1TOp2=0;

if(p2_take0?||?p2_goAd0)

p2TOp1=1;

else

p2TOp1=0;

printf("操作流水%2d:",cen);

printf("%s%s",p1TOp20?"從p1":"",p2TOp10?"從p2":"");

printf("%s%s",p1_goAd0?getName(p1_goAd):"",p1_goAd0?"下船":"");

printf("%s%s",p1_take0?getName(p1_take):"",p1_take0?"上船":"");

printf("%s%s",p2_goAd0?getName(p2_goAd):"",p2_goAd0?"下船":"");

printf("%s%s",p2_take0?getName(p2_take):"",p2_take0?"上船":"");

if(headSave-next-next!=NULL)

printf("。之后行駛方向:%s%s\n",p1TOp20?"p1-p2":"",p2TOp10?"p1-p2":"");

else

printf("\n");

headSave=headSave-next;

}

}

char?*getName(int?b)//獲取對應(yīng)名稱

{

if(b==1000)

return?"人";

else?if(b==100)

return?"狼";

else?if(b==10)

return?"羊";

else?if(b==1)

return?"菜";

return?"";

}

int?toShip(int?*p1,int?*p2,int?*ship,bool?f)//遞歸函數(shù):上船人及任意一組合;lastTake:上一次承載物體,首次調(diào)用傳0;f=0:p1-p2方向;1:反向。返回狀態(tài),1:方案可行;0:方案不可行;

{

int?take=-1,goAd,gdflag=1,cenSave;//take:上船物體。??goAd:下船物體。gdflag:標(biāo)識(shí)變量,p2判斷能否直接下船,1能0不能

cenSave=++cen;

while(1)

{

goAd=*ship-1000;

if(f==0)//準(zhǔn)備p1往p2

{

if(take==-1)

take=getFist(*p1);

*p1-=take;

*p1+=goAd;

gdflag=1;//標(biāo)識(shí)置1,等到p2首先嘗試直接卸貨

}

else//準(zhǔn)備p2往p1

{

if(take==-1??gdflag==0)

{

take=getFist(*p2);

printf("開始嘗試替換貨物:\n");

}

if(gdflag==1)//如果p2可以直接卸貨

*p2+=goAd;

else//如果不能直接卸貨,嘗試帶走一個(gè)同時(shí)卸貨

{

*p2-=take;

*p2+=goAd;

}

}

printf("遞歸層級%d:假設(shè)%s從%s上船。%s下船,%s方向行駛。\n",cenSave,take0?getName(take):"無貨物",f==0?"p1":"p2",goAd!=0?getName(goAd):"無貨物",f==0?"p1往p2":"p2往p1");

if(beEaten(*p1,*p2))//如果發(fā)生被吃,假設(shè)失敗,還原數(shù)據(jù),選擇下一假設(shè)

{

if(f==0)

{

*p1+=take;

*p1-=goAd;

}

else

{

if(gdflag==1)//p2點(diǎn)確定不能直接卸貨,還原數(shù)據(jù),標(biāo)識(shí)置0

{

printf("----不能直接卸貨,貨物%s回到船上。",getName(goAd));

*p2-=goAd;

gdflag=0;

continue;

}

else//不能直接卸貨并嘗試替換貨物失敗,選擇下一個(gè)貨物替換

{

*p2+=take;

*p2-=goAd;

}

}

if(take==1)

{

printf("本次靠岸無可行的裝卸方案,返回層級%d!\n",cenSave-1);

return?0;

}

take=take/10;//嘗試選擇下一個(gè)貨物

continue;

}

else

{

if(f==1??gdflag==1)//p2直接卸貨假設(shè)成立船清空

*ship=1000;

else

*ship=1000+take;//換貨假設(shè)成立貨物裝船

if(*p1==0)//如果已經(jīng)完全轉(zhuǎn)移

{

printf("所有貨物過河成功?。n");

return?1;

}

if(f==0)

addLog(take,goAd,0,0,cenSave);//生成流水日志

else

addLog(0,0,take,goAd,cenSave);//生成流水日志

if(toShip(p1,p2,ship,f==0?1:0))

{

return?1;

}

else//由于下級失敗,本回合重新選擇

{

gdflag=0;

continue;

}

}

}

}

int?getFist(int?pn)//獲取物品組合中第一個(gè)

{

int?i,count=0;

while(1)//上船物體從岸上第一個(gè)物體開始選擇

{

if(pn=1)

break;

pn=pn/10;

count++;

}

for(i=0;icount;i++)

pn=pn*10;

return?pn;

}

int?beEaten(int?p1,int?p2)//檢查是否發(fā)生被吃事件,發(fā)生返回1,未發(fā)生返回0

{

int?ren=0;

if(p1==110??++ren==1)

printf("----河岸p1狼把羊吃了!重新選擇\n");

if(p2==110??++ren==1)

printf("----河岸p2狼把羊吃了!重新選擇\n");

if(p1==11??++ren==1)

printf("----河岸p1羊把菜吃了!重新選擇\n");

if(p2==11??++ren==1)

printf("----河岸p2羊把菜吃了!重新選擇\n");

return?ren;

}

c語言編程二分查找

好久不寫了

寫一個(gè)程序,建立N元整型數(shù)組,然后輸入查找的整數(shù)x,查找x是否包含在數(shù)組中,查找用函數(shù)實(shí)現(xiàn),若查找成功,返回x在數(shù)組中的第一次出現(xiàn)的下標(biāo),查找失敗,返回-1

源程序:

#include"stdio.h"

#define N 10

int locate(int a[N],int x)

{int h,r,m;

h=0;r=N-1;m=(h+r)/2;

while(h=rx!=a[m])

if(xa[m]) {r=m-1;m=(h+r)/2;}

else {h=m+1;m=(h+r)/2;}

if(hr) return -1; /*查找失敗,返回-1*/

return m; /*查找成功,返回有效下標(biāo)m */

}

void upinsert(int a[],int i) /*插入排序 (升序)*/

{int x,j;

x=a[i];j=i-1;

while(j=0a[j]x) {a[j+1]=a[j];j--;}

a[j+1]=x;

}

void main()

{int a[N],x,k,n;

printf("input %d integers:\n",N);

for(k=0;kN;k++) {scanf("%d",a+k);upinsert(a,k);}

printf("input x=") ;scanf("%d",x);

n=locate(a,x);

for(k=0;kN;k++) printf("%4d",a[k]);

printf("\n fist position=%d\n",n);

}

沒有錯(cuò)誤,我試過了

C語言 指針問題

這個(gè)程序沒錯(cuò),我在VC上可以運(yùn)行。這個(gè)程序?qū)嶋H上就是將一個(gè)字符串中指定位置上的字符刪除掉。下面解釋兩個(gè)語句的意思。

假如輸入:

abcdefg

4

輸出:

abcefg

p+=position-1; 相當(dāng)于 p = p + (position-1); 也就是將指針 p 從字符串首部移動(dòng)到 (position - 1)個(gè)位置。一開始 p 指向 'a',現(xiàn)在 p 指向 'd'。

while((*p++=*(p+1))!='\0'); 相當(dāng)于

while(p!='\0'){ *p=*(p+1); p++;} 也就是不斷地將后一個(gè)元素取代前一個(gè)元素,'d'被'e'取代,'e'被‘f'取代,如此直到字符串末尾。

C語言如何給指針分配內(nèi)存?

1, 找到VS的cl.exe所在目錄,把這目錄復(fù)制下來:

我的VS2008的CL.EXE目錄是在E:\Program Files\Microsoft Visual Studio 9.0\VC\bin,

VS2010可以類似的找到..

在'我的電腦'上點(diǎn)右鍵,

選右鍵菜單'屬性'-'高級'-'環(huán)境變量',

在彈出的環(huán)境變量設(shè)置框里找"PATH"這個(gè)變量, (在用戶變量或系統(tǒng)變量里都可以)

然后在"PATH"的值后面,用分號分隔,

把將才找到的路徑串復(fù)制進(jìn)去,選確定.

2, 重新運(yùn)行CMD開啟新的命令窗.

3, 輸入cl回車檢查PATH路徑是否生效.

//以上步聚是設(shè)置環(huán)境變量,只需設(shè)一次以后就好用了.以后每次要命令行下編譯C++程序,就從下面第4步開始.

4, 輸入vcvars32 ,運(yùn)行cl.exe同一路徑下的vcvars32.bat,設(shè)置其它環(huán)境變量.

5, 寫一個(gè)helloworld程序,保存成hello.cpp, cl hello.cpp回車試試編譯正常不. 如果成功,則生成hello.exe文件.

//-----------------------------------------------------------

C/C++ 編譯器選項(xiàng)

-優(yōu)化-

/O1 最小化空間 /Op[-] 改善浮點(diǎn)數(shù)一致性

/O2 最大化速度 /Os 優(yōu)選代碼空間

/Oa 假設(shè)沒有別名 /Ot 優(yōu)選代碼速度

/Obn 內(nèi)聯(lián)展開(默認(rèn) n=0) /Ow 假設(shè)交叉函數(shù)別名

/Od 禁用優(yōu)化(默認(rèn)值) /Ox 最大化選項(xiàng)。(/Ogityb2 /Gs)

/Og 啟用全局優(yōu)化 /Oy[-] 啟用框架指針省略

/Oi 啟用內(nèi)部函數(shù)

-代碼生成-

/G3 為 80386 進(jìn)行優(yōu)化 /Gh 啟用 _penter 函數(shù)調(diào)用

/G4 為 80486 進(jìn)行優(yōu)化 /GH 啟用 _pexit 函數(shù)調(diào)用

/G5 為 Pentium 進(jìn)行優(yōu)化 /GR[-] 啟用 C++ RTTI

/G6 對 PPro、P-II、P-III 進(jìn)行優(yōu)化 /GX[-] 啟用 C++ EH (與 /EHsc 相同)

/G7 對 Pentium 4 或 Athlon 進(jìn)行優(yōu)化 /EHs 啟用 C++ EH (沒有 SEH 異常)

/GB 為混合模型進(jìn)行優(yōu)化(默認(rèn)) /EHa 啟用 C++ EH(w/ SEH 異常)

/Gd __cdecl 調(diào)用約定 /EHc extern "C" 默認(rèn)為 nothrow

/Gr __fastcall 調(diào)用約定 /GT 生成纖維安全 TLS 訪問

/Gz __stdcall 調(diào)用約定 /Gm[-] 啟用最小重新生成

/GA 為 Windows 應(yīng)用程序進(jìn)行優(yōu)化 /GL[-] 啟用鏈接時(shí)代碼生成

/Gf 啟用字符串池 /QIfdiv[-] 啟用 Pentium FDIV 修復(fù)

/GF 啟用只讀字符串池 /QI0f[-] 啟用 Pentium 0x0f 修復(fù)

/Gy 分隔鏈接器函數(shù) /QIfist[-] 使用 FIST 而不是 ftol()

/GZ 啟用堆棧檢查(/RTCs) /RTC1 啟用快速檢查(/RTCsu)

/Ge 對所有函數(shù)強(qiáng)制堆棧檢查 /RTCc 轉(zhuǎn)換為較小的類型檢查

/Gs[num] 控制堆棧檢查調(diào)用 /RTCs 堆棧幀運(yùn)行時(shí)檢查

/GS 啟用安全檢查 /RTCu 未初始化的本地用法檢查

/clr[:noAssembly] 為公共語言運(yùn)行庫編譯

noAssembly - 不產(chǎn)生程序集

/arch:SSE|SSE2 CPU 結(jié)構(gòu)的最低要求,以下內(nèi)容之一:

SSE - 啟用支持 SSE 的 CPU 可用的指令

SSE2 - 啟用支持 SSE2 的 CPU 可用的指令

-輸出文件-

/Fa[file] 命名程序集列表文件 /Fofile 命名對象文件

/FA[sc] 配置程序集列表 /Fpfile 命名預(yù)編譯頭文件

/Fd[file] 命名 .PDB 文件 /Fr[file] 命名源瀏覽器文件

/Fefile 命名可執(zhí)行文件 /FR[file] 命名擴(kuò)展 .SBR 文件

/Fm[file] 命名映射文件

-預(yù)處理器-

/AIdir 添加到程序集搜索路徑 /Fx 將插入的代碼合并到文件

/FUfile 強(qiáng)制使用程序集/模塊 /FIfile 命名強(qiáng)制包含文件

/C 不抽出注釋 /Uname 移除預(yù)定義宏

/Dnametext 定義宏 /u 移除所有預(yù)定義宏

/E 預(yù)處理到 stdout /Idir 添加到包含搜索路徑

/EP 預(yù)處理到 stdout,沒有 #line /X 忽略“標(biāo)準(zhǔn)位置”

/P 預(yù)處理到文件

-語言-

/Zi 啟用調(diào)試信息 /Ze 啟用擴(kuò)展(默認(rèn))

/ZI 啟用“編輯并繼續(xù)”調(diào)試信息 /Zl 省略 .OBJ 中的默認(rèn)庫名

/Z7 啟用舊式調(diào)試信息 /Zg 生成函數(shù)原型

/Zd 僅有行號調(diào)試信息 /Zs 只進(jìn)行語法檢查

/Zp[n] 在 n 字節(jié)邊界上包裝結(jié)構(gòu) /vd 禁用/啟用 vtordisp

/Za 禁用擴(kuò)展(暗指 /Op) /vmx 指向成員的指針類型

/Zc:arg1[,arg2] C++ 語言一致性,這里的參數(shù)可以是:

forScope - 對范圍規(guī)則強(qiáng)制使用標(biāo)準(zhǔn) C++

wchar_t - wchar_t 是本機(jī)類型,不是 typedef

- 雜項(xiàng) -

@file 選項(xiàng)響應(yīng)文件 /won 發(fā)出一次警告 n

/?, /help 打印此幫助消息 /wln 為 n 設(shè)置警告等級 1-4

/c 只編譯,不鏈接 /Wn 設(shè)置警告等級(默認(rèn) n=1)

/Hnum 最大外部名稱長度 /Wall 啟用所有警告

/J 默認(rèn) char 類型是 unsigned /Wp64 啟用 64 位端口定位警告

/nologo 取消顯示版權(quán)消息 /WX 將警告視為錯(cuò)誤

/showIncludes 顯示包含文件名 /WL 啟用單行診斷

/Tcsource file 將文件編譯為 .c /Yc[file] 創(chuàng)建 .PCH 文件

/Tpsource file 將文件編譯為 .cpp /Yd 將調(diào)試信息放在每個(gè) .OBJ 中

/TC 將所有文件編譯為 .c /Yl[sym] 為調(diào)試庫插入 .PCH 引用

/TP 將所有文件編譯為 .cpp /Yu[file] 使用 .PCH 文件

/Vstring 設(shè)置版本字符串 /YX[file] 自動(dòng) .PCH

/w 禁用所有警告 /Y- 禁用所有 PCH 選項(xiàng)

/wdn 禁用警告 n /Zmn 最大內(nèi)存分配(默認(rèn)為 %)

/wen 將警告 n 視為錯(cuò)誤

-鏈接-

/MD 與 MSVCRT.LIB 鏈接 /MDd 與 MSVCRTD.LIB 調(diào)試庫鏈接

/ML 與 LIBC.LIB 鏈接 /MLd 與 LIBCD.LIB 調(diào)試庫鏈接

/MT 與 LIBCMT.LIB 鏈接 /MTd 與 LIBCMTD.LIB 調(diào)試庫鏈接

/LD 創(chuàng)建 .DLL /Fnum 設(shè)置堆棧大小

/LDd 創(chuàng)建 .DLL 調(diào)試庫 /link [鏈接器選項(xiàng)和庫]

如果對您有幫助,請記得采納為滿意答案,謝謝!祝您生活愉快!

最壞適應(yīng)算法 c語言

/**------------------------------------------------------

進(jìn)入程序后可以根據(jù)菜單選項(xiàng)進(jìn)入不同的模塊

1.使用首次適應(yīng)算法分配空間

2.使用最佳適應(yīng)算法分配空間

3.釋放一塊空間

4.顯示內(nèi)存分配情況

5.退出系統(tǒng)

----------------------------------------------------------**/

#include stdio.h

#include stdlib.h

#include string.h

#include conio.h

#define MEMSIZE 100 /*定義內(nèi)存大小為100*/

#define MINSIZE 2 /*如果小于此值 將不再分割內(nèi)存*/

typedef struct _MemoryInfomation{/* 內(nèi)存空間分區(qū)表 結(jié)構(gòu)*/

int start; /*起始地址*/

int size; /*大小*/

char info; /*狀態(tài) F:空閑(Free) U:占用(Used) E 結(jié)束(end)*/

}MEMINFO;

MEMINFO MemList[MEMSIZE]; //內(nèi)存空間信息表

void Display();

/*--------------------------------------------------------

函數(shù)名:InitALL()

功 能:初始化所有變量

--------------------------------------------------------*/

void InitAll(){

int i;

MEMINFO temp={0,0,'e'};

for(i=0;iMEMSIZE;i++) //初始化空間信息表

MemList[i]=temp;

MemList[0].start=0; //起始地址為0

MemList[0].size=MEMSIZE;//空間初始為最大的

MemList[0].info='f'; //狀態(tài)為空閑

}

/*--------------------------------------------------------

函數(shù)名:FirstFit_new()

功 能:首次適應(yīng)算法分配內(nèi)存

--------------------------------------------------------*/

void FirstFit_new(){

int i,j,size;

char temp[10];

printf("FirstFit_new:How many MEMORY requir?");

gets(temp);

size=atoi(temp); //將字符串轉(zhuǎn)化為整數(shù)

for(i=0; i MEMSIZE-1 MemList[i].info != 'e';i++) //到了空間尾且沒有空間分配

{

if(MemList[i].size = size MemList[i].info=='f') //滿足所需要的大小,且是空閑空間

{

if(MemList[i].size - size = MINSIZE) //如果小于規(guī)定的最小差則將整個(gè)空間分配出去

MemList[i].info='u'; //標(biāo)志為使用

else

{

for(j = MEMSIZE-2; j i; j--) //將i后的信息表元素后移

{

MemList[j+1]=MemList[j];

}

//將i分成兩部分,使用低地址部分

MemList[i+1].start= MemList[i].start+size;

MemList[i+1].size = MemList[i].size-size;

MemList[i+1].info='f';

MemList[i].size=size;

MemList[i].info='u';

}

break;

}

}

if(i == MEMSIZE-1 || MemList[i].info=='e') //沒有找到符合分配的空間

{

printf("Not Enough Memory!!\n");

getchar();

}

Display();

}

/*--------------------------------------------------------

函數(shù)名:BestFit_new()

功 能:最佳適應(yīng)算法分配內(nèi)存

--------------------------------------------------------*/

void BestFit_new()

{

int i,j,k,flag,size;

char temp[10];

printf("BestFit_new How many MEMORY requir?");

gets(temp);

size=atoi(temp); //將字符串轉(zhuǎn)化為整數(shù)

j=0;

flag=0; //標(biāo)志是否有合適的空間分配,0無,1有

k=MEMSIZE; //用來保存滿足要求的最小空間

for(i=0;iMEMSIZE-1 MemList[i].info!='e';i++)

{

if(MemList[i].size = size MemList[i].info == 'f') //符合要求

{

flag=1;

if(MemList[i].size k) //比符合要求的最小空間小,則交換

{

k=MemList[i].size;

j=i;

}

}

}

i=j;

if(flag == 0) //沒找到

{

printf("Not Enough Memory!\n");

getch();

j=i;

}

else if(MemList[i].size - size = MINSIZE) //小于規(guī)定的最小差,將整個(gè)空間分配

MemList[i].info='u';

else

{

for(j = MEMSIZE-2; j i; j--) //后移

MemList[j+1]=MemList[j];

MemList[i+1].start=MemList[i].start+size;

MemList[i+1].size=MemList[i].size-size;

MemList[i+1].info='f';

MemList[i].size=size;

MemList[i].info='u';

}

Display();

}

/*--------------------------------------------------------

最壞適應(yīng)算法

*/

void BadFit_new()

{

int i,j,k,flag,size;

char temp[10];

printf("BadFit_new How many MEMORY requir?");

gets(temp);

size=atoi(temp);

j=0;

flag=0;

k=0; //保存滿足要求的最大空間

for(i=0;iMEMSIZE-1MemList[i].info!='e';i++)

{

if(MemList[i].size=sizeMemList[i].info=='f')

{

flag=1;

if(MemList[i].sizek)

{

k=MemList[i].size;

j=i;

}

}

}

i=j;

if(flag=0)

{

printf("Not Enough Memory!\n");

getch();

j=i;

}

else if(MemList[i].size-size=MINSIZE)

MemList[i].info='u';

else

{

for(j=MEMSIZE-2;ji;j--)

MemList[j+1]=MemList[j];

MemList[i+1].start=MemList[i].start+size;

MemList[i+1].size=MemList[i].size-size;

MemList[i+1].info='f';

MemList[i].size=size;

MemList[i].info='u';

}

Display();

}

/*--------------------------------------------------------

函數(shù)名:del()

功 能:釋放一塊內(nèi)存

--------------------------------------------------------*/

void del()

{

int i,number;

char temp[10];

printf("\nplease input the NUMBER you want stop:");

gets(temp);

number=atoi(temp);

if(MemList[number].info == 'u') //輸入的空間是使用的

{

MemList[number].info = 'f'; //標(biāo)志為空閑

if(MemList[number+1].info == 'f') //右空間為空則合并

{

MemList[number].size+=MemList[number+1].size; //大小合并

for(i=number+1;i MEMSIZE-1 MemList[i].info !='e';i++)/* i后的空間信息表元素前移 */

if(i0)

MemList[i]=MemList[i+1];

}

if(number 0 MemList[number-1].info=='f') //左空間空閑則合并

{

MemList[number-1].size+=MemList[number].size;

for(i=number;iMEMSIZE-1MemList[i].info!='e';i++)

MemList[i]=MemList[i+1];

}

}

else

{

printf("Thist Number is Not exist or is Not used!\n ");

getchar();

}

Display();

}

/*--------------------------------------------------------

函數(shù)名:Display()

功 能:顯示內(nèi)存狀態(tài)

--------------------------------------------------------*/

void Display(){

int i,

used=0; //記錄可以使用的總空間量

/* clrscr();*/

printf("\n----------------------------------------------\n");

printf("%5s%15s%15s","Number","start","size","Info");

printf("\n----------------------------------------------\n");

for(i=0;i MEMSIZE MemList[i].info != 'e';i++)

{

if(MemList[i].info == 'u')

used+=MemList[i].size;

printf("%5d%15d%15d%15s\n",i,MemList[i].start,MemList[i].size,MemList[i].info=='u'?"USED":"FREE");

}

printf("\n----------------------------------------------\n");

printf("Totalsize:%-10d Used:%-10d Free:%-10d\n",MEMSIZE,used,MEMSIZE-used);

printf("\n\n Press Any Key to return...");

getch();

}

/*--------------------------------------------------------

函數(shù)名:main()

功 能:主函數(shù)

--------------------------------------------------------*/

void main(){

char ch;

InitAll();

while(1){

printf("========================================================\n");

printf(" 1.Get a block use the FISTFIT method\n");

printf(" 2.Get a block use the BESTFIT method\n");

printf(" 3.Get a block use the BadFIT method\n");

printf(" 4.Free a block\n");

printf(" 5.Display Mem info \n");

printf(" 6.Exit \n");

printf("========================================================\n");

ch=getch();

switch(ch){

case '1':FirstFit_new();break; //首次適應(yīng)算法

case '2':BestFit_new();break; //最佳適應(yīng)算法

case '3':BadFit_new();break; //最壞適應(yīng)算法

case '4':del();break; //刪除已經(jīng)使用完畢的空間

case '5':Display();break; //顯示內(nèi)存分配情況

case '6':exit(0);

}

}

}

在C語言中用指針將表中元素的次序反轉(zhuǎn)。

取個(gè)例子,L是一條鏈子,剛開始L-first是鏈頭,你反轉(zhuǎn)鏈子的過程就是把一節(jié)鏈環(huán)拆下來,再接在L的頭部

q=p-next就是把q拆下來,;p-next=q-next就是把被拆成兩部分的鏈子連在一起;q-next=L-first把q接在L的頭部,L-fist=q就是把L的頭部改為q

本文標(biāo)題:c語言fist函數(shù) c語言上fib函數(shù)
文章地址:http://aaarwkj.com/article18/docpcgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站營銷虛擬主機(jī)、營銷型網(wǎng)站建設(shè)、面包屑導(dǎo)航、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
国产精品超碰在线观看| 国产亚洲欧美精品久久久久| 国产日韩欧美在线精品| 亚洲精品日本一区二区| 色橹橹欧美午夜精品福利| 国产精品呻吟久久人妻| 免费无遮挡午夜视频网站| 在线日韩中文字幕二区 | 中文字幕一区二区三区精彩视频| 黄色大片黄色大片黄色大片| 欧美精品亚洲二区中文乱码| 午夜精品国产日韩欧美在线| 亚洲成色在线综合剧情网站 | 欧美日韩69av网| 国产一区中文字幕在线| 内射久久一区二区亚洲| 亚洲熟妇中文字幕五十中出| 日韩高清伦理一区二区| 人妻人人澡人人添人人爽桃色| 成人爱爱免费观看视频| 久久综合视频大片视频| 亚洲精品一品区二品区三区| 91大片在线观看视频| 国产精品一品二品国精品| 亚洲日本韩国三级一区| 亚洲精品国产精品乱码| 人妻少妇中文字幕久久| 黑人爆操中国女孩在线观看| 精品国产一区二区三区精品日韩| 亚洲精品国产第一区第二区| 日本精品在线亚洲国产欧美| 婷婷五五月深爱开心激情| 国产精品久久高清免费| 国产亚洲综合区成人国产| 少妇视频资源一区二区三区| 亚洲国产日韩欧美第一页| 丰满人妻被猛烈进入中| 蜜臀av一区二区三区人妻| 三级日本一区二区三区| 欧美高清视频免费播放| 欧美日韩在线视频一区|