c語言螞蟻
① C語言編程
#include <stdlib.h>
#include <Windows.h>
#include <conio.h>
typedef int elemtype;
typedef struct DuLNode //定義結點類型
{
elemtype data;
struct DuLNode *prior;
struct DuLNode *next;
}DuLNode, *Dulinklist;
Dulinklist initlist() //初始化雙向鏈表
{
Dulinklist L;
L = (Dulinklist)malloc(sizeof(DuLNode)); //表頭附加結點
if (!L) exit(-2);
L->data = 0;
L->next = NULL;
L->prior =NULL;
return L;
}//初始化了一個空表
void createlist(Dulinklist *L) //尾插法生成雙向鏈表
{
Dulinklist p, t;
t = *L;
printf("尾插法:請輸入雙向鏈表節點值,以輸入0結束。\n");
scanf("%d", &t->data);
while (t->data != 0)
{
p = (Dulinklist)malloc(sizeof(DuLNode));
if (!p) exit(-2);
t->next = p;
p->prior = t;
scanf("%d", &p->data);
t = p;
}
t ->next= NULL;
/*(*L)->prior = t->prior;
t->prior->next = (*L);*/
}
void print_list(Dulinklist L)
//通過鏈表的遍歷來輸出鏈表中的信息
{
int i;
Dulinklist p;
printf("雙向鏈表為:\nhead");
for (p = L, i = 1; p!= NULL; p = p->next)
{
printf("-> %d<-", p->data);
i++;
}
//printf("-> %d\n", p->data);
printf("\n雙向鏈表的長度為 %d\n\n", i);
}
/*
一趟快速排序的具體做法是:附設兩個指針low和high(即第一個和最後一個指針),
他們的初值分別為low和high設樞軸(一般為low的值pivot)記錄的關鍵字
(即本例子中的整形data)為pivot,則首先從high所指位置
起向前搜索到第一個關鍵字小於pivot的記錄和樞軸記錄交換,然後從low所指位置起
向後搜索,找到第一個關鍵字大於pivot的記錄和樞軸記錄相互交換,重復這兩步直
至low = high為止。
*/
Dulinklist partion(Dulinklist pstHead, Dulinklist pstLow, Dulinklist pstHigh)
{
elemtype iTmp = 0;
elemtype pivot = 0;
if (!pstHead)
{
printf("錯誤,頭節點為空!/n");
exit(1);
}
if (!pstHead->next)
{
return pstHead->next;//就一個元素
}
pivot = pstLow->data;
while (pstLow != pstHigh)
{
//從後面往前換
while (pstLow != pstHigh && pstHigh->data >= pivot)
{
pstHigh = pstHigh->prior;
}
//交換high low
iTmp = pstLow->data;
pstLow->data = pstHigh->data;
pstHigh->data = iTmp;
//從前往後換
while (pstLow != pstHigh && pstLow->data <= pivot)
{
pstLow = pstLow->next;
}
//交換high low
iTmp = pstLow->data;
pstLow->data = pstHigh->data;
pstHigh->data = iTmp;
}
return pstLow;
}
//快排
void quick_sort(Dulinklist pstHead, Dulinklist pstLow, Dulinklist pstHigh)
{
Dulinklist pstTmp = NULL;
pstTmp = partion(pstHead, pstLow, pstHigh);
if (pstLow != pstTmp)
{
quick_sort(pstHead, pstLow, pstTmp->prior);
}
if (pstHigh != pstTmp)
{
quick_sort(pstHead, pstTmp->next, pstHigh);
}
}
void main(){
Dulinklist h = initlist(),head,last;
createlist(&h);
print_list(h);
last = h;
while (last->next)
{
last = last->next;
}
quick_sort(h, h->next, last->prior);
print_list(h);
}
② 有沒有人用C語言做過『模擬螞蟻巢穴』這個程序
咱們來考慮考慮這個游戲規則 好像問題比較嚴重阿
一沒有資源限制
二沒有兵種問題 沒有克制問題
三也是最重要的 隨機決定搏鬥結果 而且是一個對一個單挑 這樣的話一邊100隻打另一邊50隻打完了勝者剩50隻 兵力優勢方根本沒便宜占 也就是說這個游戲里也就沒有了陣型的問題
那就變成單純拼兵了
可是雙方造兵的唯一限制是回合數 又不要資源 所以只要都全速造兵 那就是完全均勢 誰都贏不了
還有 規則裡面一些平衡性設定沒有講清楚
比如蟻巢的生命值 蟻後工蟻在攻擊力生命值上的區別 以及棋盤的尺寸等 這些是會影響比賽進程的
比如如果棋盤很小 那雙方都會rush 如果棋盤很大 那雙方都會擴張 只有棋盤大小適中 這個游戲才有得玩