数组索引实现栈的链表实现

来源:互联网 发布:海鳗插件数据下载不了 编辑:程序博客网 时间:2024/06/11 21:55

struct NNode

{

   int data;

   int next;

};

typedef int INT;

typedef struct NNode* Link;

void DataStacksArrayInital(INT);

void DataStacksArrayPush(INT);

INT DataStacksArrayPop();

void DataStacksArrayFree();

INT DataStacksArrayView();


Link array;

INT BaseTotal;

INT MaxTotal;

void DataStacksArrayInital(INT max)

{

   if (max <= 0)

    {

       printf("max <= 0");

       return;

    }

   array = malloc(sizeof(INT)*max);

   if (!array)

    {

        printf("create failed!!!");

       return;

    }


    BaseTotal = 0;

   MaxTotal = max;

}

void DataStacksArrayPush(INT item)

{

    if (BaseTotal >=MaxTotal)

    {

        array = realloc(array, (BaseTotal +MaxTotal/2)*sizeof(INT));

       if (!array)

        {

            printf("realloc create failed!!");

           return;

        }

        MaxTotal =BaseTotal + MaxTotal/2;

    }

    array[BaseTotal].data = item;

   int temp = BaseTotal;

   BaseTotal += 1;

    array[temp].next =BaseTotal;

}

INT DataStacksArrayPop()

{

   if (BaseTotal <0)

    {

       return 0;

    }

    returnarray[--(array[--BaseTotal].next)].data;

}

void DataStacksArrayFree()

{

   free(array);

}