#include "./head.h"
//顺序栈的初始化
sqstack Initialize_Stack()
{
//申请一个数组空间作为栈空间
sqstack s = (sqstack)malloc(sizeof(sstack));
if(NULL == s)
return NULL;
//top置为-1表示空
s->top = -1;
return s;
}
//顺序栈的插入
void Insert_Stack(sqstack s, int value)
{
//顺序栈已满
if(s->top >= MAX-1)
{
printf("stack is full\n");
return ;
}
//top先加1,再插入数据
s->top++;
s->data[s->top] = value;
/*//打印stack中的data
for(int i = 0; i <= s->top; i++)
printf("s[%d] = %d\n",i,s->data[i]);
*/
printf("s.top = %d\n",s->top);
return;
}
//顺序栈的删除
void Delete_Stack(sqstack s, int* elem)
{
//stack is void
if(-1 == s->top)
{
printf("sqstack is empty\n");
return;
}
*elem = s->data[s->top];
s->top--;
printf("s.top = %d\n",s->top);
return;
}
//顺序栈的遍历
void Ergodic_Stack(sqstack s)
{
if(-1 == s->top)
{
printf("Sqstack is empty\n");
return ;
}
for(int i = 0; i <= s->top; i++)
printf("s.data[%d] = %d\n",i,s->data[i]);
return;
}
//initialize of linkstack
listack Initialize_Listack()
{
listack s = (listack)malloc(sizeof(lstack));
if(NULL == s)
{
printf("initialize of linkstack is fail\n");
return NULL;
}
s->msg.top = 0;
s->next = NULL;
printf("initialize of linkstack is success\n");
return s;
}
//insert of listack
void Insert_Lstack(listack s, int value)
{
listack p = (listack)malloc(sizeof(lstack));
if(NULL == p)
{
printf("insert of listack is fail\n");
return;
}
p->msg.data = value;
p->next = s->next;
s->next = p;
s->msg.top++;
printf("insert of linkstack is success\n");
return;
}
//delete of linkstack
void Delete_Linkstack(listack s)
{
if(s->next == NULL)
{
printf("linklist is empty\n");
return;
}
int elem = s->next->msg.data;
listack p = s->next;
s->next = p->next;
s->msg.top--;
free(p);
printf("the value of delete is %d\n",elem);
return;
}
//Ergodic linkStack
void Ergodic_Linkstack(listack s)
{
if(s->next == NULL)
{
printf("the linkstack is empty\n");
return;
}
listack p = s;
for(int i = 0; i < s->msg.top; i++)
{
p = p->next;
printf("s[%d] = %d\n",i+1,p->msg.data);
}
printf("s.top = %d\n",s->msg.top);
return;
}
六月四号作业
于 2024-06-04 19:57:42 首次发布