数据结构-栈-004

1链栈

1.1栈结点结构体定义

/*定义一个数据结构*/
typedef struct student
{
    char name[32];
    char sex;
    int age;
}DATA_TYPE;
/*定义一个栈结点*/
typedef struct stack_node
{
    DATA_TYPE data;//数据域
    struct stack_node *pnext;//指针域
}STACK_NODE;

1.2栈顶结点结构体定义

/*定义一个栈顶结点*/
typedef struct stack_top
{
    STACK_NODE *ptop;//栈顶结点指针域
    int clen;//栈顶结点数据域-栈结点数
}STACK_TOP;

1.3创建栈顶结点

/*==========创建栈顶结点(创建一个空栈)==========*/
STACK_TOP *create_stack_top(void)
{
    STACK_TOP *stack_top=NULL;

    /*申请一个栈顶结点空间*/
    stack_top=malloc(sizeof(STACK_TOP));
    if(NULL==stack_top)
    {
        perror("fail to malloc");
        return NULL;
    }

    /*栈顶结点成员初始化*/
    stack_top->ptop=NULL;
    stack_top->clen=0;

    return stack_top;
}

1.4创建栈结点

/*==========创建一个新的栈结点==========*/
STACK_NODE *create_stack_new_node(DATA_TYPE data)
{
    STACK_NODE *stack_node=NULL;

    /*申请一个栈结点空间*/
    stack_node=malloc(sizeof(STACK_NODE));
    if(NULL==stack_node)
    {
        perror("fail to malloc");
        return NULL;
    }

    /*栈结点成员初始化*/
    stack_node->data=data;
    stack_node->pnext=NULL;//思考1:这里直接初始化为NULL,还是继承栈顶的ptop?

    return stack_node;
}

1.5判断非空栈

/*==========判断是否为空栈==========*/
int is_empty_stack(STACK_TOP *pstack)
{
    return NULL==pstack->ptop;
}

1.6入栈

/*==========入栈-头插法==========*/
int push_stack(STACK_TOP *pstack,STACK_NODE *pnode)
{
    if(is_empty_stack(pstack))
    {
        pstack->ptop=pnode;//更新栈顶指针域
    }
    else
    {
        pnode->pnext=pstack->ptop;//初始化新的栈结点指针域
        pstack->ptop=pnode;//更新栈顶指针域
    }

    pstack->clen++;//更新栈顶结点数据域

    return 0;
}

1.7出栈

1.8遍历栈

/*==========遍历栈==========*/
void stack_for_each(STACK_TOP *pstack,void (*pfun)(STACK_NODE *))
{
    STACK_NODE *ptmp=NULL;

    ptmp=pstack->ptop;//初始化栈结点类型的中间指针变量为栈首
    while(1)
    {
        if(NULL==ptmp)
        {
            break;
        }

        pfun(ptmp);
        ptmp=ptmp->pnext;
    }
}

/*==========遍历方法==========*/
void show_data(STACK_NODE *pnode)
{
    printf("%-10s\t%-10c\t%-10d\n",pnode->data.name,pnode->data.sex,pnode->data.age);
}

相关推荐

  1. 数据结构--004

    2024-03-26 02:56:01       18 阅读
  2. 数据结构--

    2024-03-26 02:56:01       38 阅读
  3. 数据结构-

    2024-03-26 02:56:01       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 02:56:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 02:56:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 02:56:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 02:56:01       20 阅读

热门阅读

  1. 鸿蒙 ohpm 的异常报错

    2024-03-26 02:56:01       18 阅读
  2. webpack的核心概念

    2024-03-26 02:56:01       18 阅读
  3. mysql 截取字符串及解析json

    2024-03-26 02:56:01       20 阅读
  4. 双指针的详细教程

    2024-03-26 02:56:01       18 阅读
  5. vue2中如何实现数据的更新?

    2024-03-26 02:56:01       17 阅读
  6. 【无标题】程序员35岁会失业吗?

    2024-03-26 02:56:01       19 阅读
  7. Linux下常用命令

    2024-03-26 02:56:01       19 阅读
  8. 数据结构中排序算法

    2024-03-26 02:56:01       18 阅读
  9. TCP TLS

    2024-03-26 02:56:01       15 阅读