您的位置:首页 > 理论基础 > 数据结构算法

栈与队列--创建栈/队列

2016-06-28 10:06 459 查看
数组栈

完成Stack CreateStack(int MaxElements)函数,该函数创建一个栈,MaxElements为与分配的栈空间大小(栈可用空间为Array[0,…MaxElements-1])。

typedef int ElemType;
struct StackRecord;
typedef struct StackRecord *Stack;
struct StackRecord
{
int Capacity; //栈容量
int Top; //栈顶,初始为1
ElemType *Array;
};

Stack CreateStack(int MaxElements)
{
Stack s=(StackRecord *)malloc(sizeof(StackRecord));
s‐>Top=‐1;
s‐>Capacity=MaxElements;
s‐>Array=(ElemType *)malloc(MaxElements*sizeof(ElemType));
return s;
}


链栈

完成Stack CreateStack(void)函数,该函数创建一个栈(空栈,带头结点),并返回栈指针。

typedef int ElemType;
struct Node;
typedef struct Node * PtrToNode;
typedef PtrToNode Stack;
struct Node
{
ElemType data;
PtrToNode next;
};

Stack CreateStack(void)
{
Stack top;
Node *s;
top=NULL;
s=(Node *)malloc(sizeof(Node));
s‐>next=top;
top=s;
return top;
}


数组队列

完成Queue CreateQueue(int MaxElements)函数,该函数创建一个基于数组的队列,并返回队列指针,其中MaxElements为预分配的数组单元数。

typedef int ElemType;
struct QueueRecord;
typedef struct QueueRecord * Queue;
struct QueueRecord
{
int Capacity; //队列总容量
int Front; //队首 初始值为0
int Rear; //队尾,初始值为1
int Size; //队列中数据数,初始值为0
ElemType *Array;
};

Queue CreateQueue(int MaxElements)
{
Queue s=(QueueRecord *)malloc(sizeof(QueueRecord));
s‐>Front=0;
s‐>Rear=‐1;
s‐>Capacity=MaxElements;
s‐>Array=(ElemType *)malloc(MaxElements*sizeof(ElemType));
return s;
}


链队列

完成Queue CreateQueue(void)函数,该函数创建一个基于链表的队列,并返回队列指针,创建的链表队列不带头节点。

typedef int ElemType;
struct node;
typedef struct node Node;
struct queue;
typedef struct queue * Queue;
struct node
{
ElemType data;
Node * next;
};
struct queue
{
Node * front; //队首
Node * rear; //队尾
int size; //队列中数据数
};

Queue CreateQueue(void)
{
Queue q;
q=(queue *)malloc(sizeof(queue));
q‐>front=NULL;
q‐>rear=NULL;
q‐>size=0;
return q;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 队列