编程论坛
注册
登录
编程论坛
→
数据结构与算法
求一个用C语言写的关于栈的基本操作的代码。
Ially1008
发布于 2012-03-29 19:48, 672 次点击
要用链栈,顺序栈我会的,谢谢。。(不是交作业用的哟,是自己要找一段代码弄懂什么是链栈),谢谢。。
3 回复
#2
爱德华
2012-03-30 13:58
根据具体要求定义一个结构体数组 反复申请存储空间 建立多个节点
#3
寒风中的细雨
2012-03-30 14:32
程序代码:
1
#include <stdio.h>
2
#include <stdlib.h>
3
4
typedef
int
elem_type;
5
typedef
struct
_stack
6
{
7
elem_type elem;
8
struct
_stack *next;
9
}stack, *pstack;
10
11
int
is_empty(pstack nstack)
12
{
13
if
(NULL == nstack)
14
{
15
return
0
;
16
}
17
18
return
-
1
;
19
}
20
21
pstack get_top(pstack nstack)
22
{
23
if
(
0
== is_empty(nstack))
24
{
25
//
print msg error
26
return
NULL;
27
}
28
29
return
nstack;
30
}
31
32
int
pop(pstack *nstack)
33
{
34
if
(
0
== is_empty(*nstack))
35
{
36
//
print msg error
37
return
-
1
;
//
failed
38
}
39
pstack ntmp = *nstack;
40
*nstack = (*nstack)->next;
41
free(ntmp); ntmp = NULL;
42
43
return
0
;
//
success
44
}
45
46
int
push(pstack *nstack, elem_type nelem)
47
{
48
pstack ntmp = (pstack) malloc (
sizeof
(stack));
49
50
if
(NULL == ntmp)
51
{
52
return
-
1
;
//
failed
53
}
54
55
ntmp->elem = nelem;
56
ntmp->next = *nstack;
57
*nstack = ntmp;
58
59
return
0
;
//
success
60
}
61
62
int
main(
void
)
63
{
64
pstack nstack=NULL, ntmp;
65
int
i;
66
67
for
(i=
0
; i<
10
; ++i)
68
{
69
push(&nstack, i);
70
}
71
72
while
(
0
!= is_empty(nstack))
73
{
74
ntmp = get_top(nstack);
75
printf (
"
%d\n
"
, ntmp->elem);
76
pop(&nstack);
77
}
78
79
return
0
;
80
}
#4
寒风中的细雨
2012-03-30 14:34
知道怎么操作 应该就可以
1