注册 登录
编程论坛 数据结构与算法

求一个用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