以栈和队列为例
方法一:
先看代码
typedef int STDataType;
typedef struct Stack {
STDataType* a;
int top;
int capacity;
}ST
void StackInit(ST* ps) {
assert(ps);
ps->a = NULL;
ps->top = 0;//ps->next = -1;
ps->capacity = 0;
}
void test1()
{
ST st;
StackInit(&st);
}
int main()
{
test1();
return 0;
}
在test函数中我们先是定义了一个结构体变量 st ,用函数StackPrint来初始化结构体变量,我们传递进来的是一个结构体变量的地址,通过地址可以来改变结构体变量
第二种方法
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int SLDataType;
typedef struct Stack {
SLDataType* a;
int size;
int capacity;
}ST;
Stack* StackInit();
Stack* StackInit()
{
Stack* st = (Stack*)malloc(sizeof(Stack));
st->a = NULL;
st->capacity = st->size = 0;
return st;
}
void test1()
{Stack* st = StackInit();
StackPush(st, 1);
StackPush(st, 2);
StackPush(st, 3);
StackPush(st, 4);
StackPop(st);
StackPrin