澳门新蒲京娱乐


我跆拳道中断了,VJGUI消息设计
图片 10
基数评估,2014新特性基数评估引起一些性能问题

明天看了少数链表,线性表的链式存款和储蓄

/*
我一直在想,像前两天我写的那个《魔兽》步兵的属性定义程序存在一个问题,虽然定义步兵的属性,比如血量,攻击力等,但是,那只是对这个游戏而言的,在游戏过程中,玩家训练步兵的数量是不一定的,那要看玩家需要训练多少,这就没办法用数组实现,因为数组声明的时候需要定义好数组元素的数量,例如魔兽100人口,如果为了给用户训练最大步兵量而把这个数组声明到最大,那样是十分耗费内存空间的。《魔兽》人口上限是100人口,每个步兵占2个,就是说,要声明到50,可是在早期的记事战略游戏,比如《帝国时代》,每个兵占1个人口,上限200,又如《红色警戒》,没有人口上限,如何声明呢?这两天看了链表,我受了点儿启发,我想应该是通过链表实现的,因为链表的结点是需要多少创建多少。所以今天我写了这样的一个程序,因为看的数据结构教材是c语言版的,所以暂且先拿c语言写了一个,过几天我将研究如何用c++实现链表,程序如下:
*/

 链表

链表是一种物理存储单元上非连续、非顺序的存储结构,它由结点组成,结点包括数据域和指针域(指向下一个地址)。它很好的解决了顺序表(数组)产生的空间资源浪费问题。

#include <stdio.h>
struct footman      /*因为是c语言,所以只能用结构体了,不能用class*/
{
    int life;
    int attack;
    int defence;
};
typedef struct footman FTM;
struct node            /*声明节点*/
{
    FTM ftm;
    struct node *link;         /*递归式声明link指向下一结点*/
};
typedef struct node NODE;
main()
{
    int i,total;             /*total 是总人数*/
    NODE  *head,*p,*pr;
    head=NULL;               /*head指向首地址,赋值为空值*/
    printf(“Please input the amount of footman you want to train:”);
    scanf(“%d”,&total);
    for(i=0;i<total;i++)
    {
        p=(NODE *)malloc(sizeof(NODE)); 
/*malloc用来申请一个内存空间*/
        p->link=NULL;
        p->ftm.life=420;        
/*这个地方我错过好几次了,一定要用p指向ftm*/
        p->ftm.attack=12;       
/*原因就是p指向NODE,而ftm是在结点里声明的*/
        p->ftm.defence=3;
        if(i==0)                 /*当i==0时,p与pr指向首地址*/
        {
            head=p;
            pr=p;
        }
        else
        {                   /*当i!=1时,pr将下一个结点链入链表*/
            pr->link=p;
            pr=pr->link;    
/*pr指向p,而下一个p在malloc语句中将这个pr引到下一个结点*/
        }                    /*p->link是用来指向链表的*/
    }
    for(p=head,i=0;p!=NULL;p=p->link)              /*循环输出*/
    {
        printf(“the number %d footman””s “,i);
        printf(“life is %d”,p->ftm.life);
        printf(“, and atk is %d\n”,p->ftm.attack);
        printf(“, and def is %d\n”,p-

原理:每个节点的指针域内有一个指针,指向下一个节点,而最后一个节点则指向一个空值NULL,头结点一般有一个头指针head。

图片 1

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图