数据结构(c语言版).哥哥姐姐们,帮忙做题.有分拿的.
- 提问者网友:却不属于对方
- 2021-07-16 02:38
- 五星知识达人网友:舊物识亽
- 2021-07-16 03:58
根据您的意思,写出如下代码
#include <stdlib.h>
#include <stdio.h>
#define MAXSIZE 100
//共享数据区
int datas[MAXSIZE];
typedef struct Stack1
{
int top;
} _STACK1;
typedef struct Stack2
{
int top;
} _STACK2;
void InitStack1(Stack1* stack)
{
stack->top = -1;
}
void InitStack2(Stack2* stack)
{
stack->top = MAXSIZE;
}
int IsEmpty(Stack1* stack1, Stack2* stack2)
{
if(-1 == stack1->top && MAXSIZE == stack2->top)
return 1;
else
return 0;
}
int IsFull(Stack1* stack1, Stack2* stack2)
{
if(1 == (stack2->top-stack1->top))
return 1;
else
return 0;
}
int Push1(Stack1* stack1, Stack2* stack2, int data)
{
if(IsFull(stack1, stack2))
{
printf("Stack is full\n");
return -1;
}
datas[++(stack1->top)] = data;
return data;
}
int Push2(Stack1* stack1, Stack2* stack2, int data)
{
if(IsFull(stack1, stack2))
{
printf("Stack is full\n");
return -1;
}
datas[--(stack2->top)] = data;
return data;
}
int Pop1(Stack1* stack)
{
if(-1 >= stack->top)
{
printf("Stack1 is empty\n");
return -1;
}
return datas[stack->top--];
}
int Pop2(Stack2* stack)
{
if(MAXSIZE <= stack->top)
{
printf("Stack2 is empty\n");
return -1;
}
return datas[stack->top++];
}
void ShowStack1(Stack1* stack)
{
int i;
for(i=0; i<=stack->top; i++)
{
printf("%d\t", datas[i]);
}
printf("\n");
}
void ShowStack2(Stack2* stack)
{
int i;
for(i=MAXSIZE-1; i>=stack->top; i--)
{
printf("%d\t", datas[i]);
}
printf("\n");
}
void main()
{
Stack1 stack1;
Stack2 stack2;
InitStack1(&stack1);
InitStack2(&stack2);
int i;
for(i=1; i<=30; i++)
Push1(&stack1, &stack2, i);
for(i=MAXSIZE; i>=70; i--)
Push2(&stack1, &stack2, i);
ShowStack1(&stack1);
ShowStack2(&stack2);
Pop1(&stack1);
ShowStack1(&stack1);
Pop2(&stack2);
ShowStack2(&stack2);
}
如果有什么不明白的可以追问。
谢谢采纳!