当前位置:首页 » 编程语言 » 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-07-05 16:10:30 浏览:512
微博数据库设计 发布:2025-07-05 15:30:55 浏览:14
linux485 发布:2025-07-05 14:38:28 浏览:296
php用的软件 发布:2025-07-05 14:06:22 浏览:747
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:421
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:671
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:229
java的开发流程 发布:2025-07-05 12:45:11 浏览:672
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:273
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:823