当前位置:首页 » 编程语言 » c语言蚂蚁

c语言蚂蚁

发布时间: 2022-12-22 08:50:13

① 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 如果棋盘很大 那双方都会扩张 只有棋盘大小适中 这个游戏才有得玩

热点内容
鼠标如何编程 发布:2025-05-16 02:29:09 浏览:815
安卓70能用什么软件 发布:2025-05-16 01:45:09 浏览:480
编程发展史 发布:2025-05-16 01:38:52 浏览:528
android图片气泡 发布:2025-05-16 01:38:40 浏览:886
文件加密编辑器下载 发布:2025-05-16 01:30:41 浏览:343
linuxapacheyum安装 发布:2025-05-16 01:30:31 浏览:476
大连宾利浴池wifi密码是多少 发布:2025-05-16 01:25:36 浏览:172
缓存数据生产服务 发布:2025-05-16 01:08:58 浏览:585
普通电脑服务器图片 发布:2025-05-16 01:04:02 浏览:971
服务器地址和端口如何区分 发布:2025-05-16 01:03:17 浏览:834