链栈:
栈空状态:lst->next==NULL;
栈满状态:不存在栈满状态(假设内存无限大的情况下不存在,一般可这么认为)
代码如下:
#include<iostream>
using namespace std
;
typedef struct LNode
{
int data
;
struct LNode
* next
;
}LNode
;
void initStack(LNode
*& lst
)
{
lst
= (LNode
*)malloc(sizeof(LNode
));
lst
->next
= NULL;
}
int isEmpty(LNode
* lst
)
{
if (lst
->next
== NULL)
return 1;
else
return 0;
}
void push(LNode
* lst
, int x
)
{
LNode
* p
;
p
= (LNode
*)malloc(sizeof(LNode
));
p
->next
= NULL;
p
->data
= x
;
p
->next
= lst
->next
;
lst
->next
= p
;
}
int pop(LNode
* lst
, int& x
)
{
LNode
* p
;
if (lst
->next
== NULL)
return 0;
p
= lst
->next
;
x
= p
->data
;
lst
->next
= p
->next
;
free(p
);
return 1;
}
void ShowLNode(LNode
* lst
)
{
while (lst
->next
)
{
cout
<< lst
->next
->data
<< " ";
lst
= lst
->next
;
}
}
int main()
{
LNode
* L
= (LNode
*)malloc(sizeof(LNode
));
initStack(L
);
push(L
, 1);
push(L
, 2);
push(L
, 3);
ShowLNode(L
);
cout
<< "出栈后" << endl
;
int x
=0;
pop(L
,x
);
ShowLNode(L
);
return 0;
}
运行结果:
转载请注明原文地址:https://ipadbbs.8miu.com/read-4053.html