mignatian的博客

靡不有初鲜克有终

数据结构之链式栈的实现

前面我们讲了顺序栈的实现,现在我们来看链式栈的实现

#pragma once
#include<stdio.h>
#include<stddef.h>
#include<stdlib.h>

#define HEADER printf("\n============%s===========\n",__FUCTION__);
typedef char linkstacktype;
typedef struct linkstack{
    linkstacktype data;
    struct linkstack *next;
}linkstack;
void linkstack_init(linkstack **head);
void linkstack_push(linkstack **head,linkstacktype value);
void linkstack_pop(linkstack **head);
int linkstack_gettop(linkstack *head,linstacktype *value);
void linstack_print(linkstack *head);
linkstack *linkstack_creat(linkstacktype value);

下面我们就要来实现栈的功能

void linkstack_init(linkstack **head)
{
    if(head == NULL)
    {
        return;
    }
    *head = NULL;
    return;
}
linkstack *linkstack_creat(linkstacktype value)
{
    linkstack newnode = (linkstack*)malloc(sizeof(linkstack));
    newnode->data = value;
    newnode->next = NULL;
    return newnode;
}
void linkstack_push(linkstack** head,linkstacktype value)
{
    if(head == NULL)
    {
        return;
    }
    linkstack *newnode = linkstack_creat(value);
    newnode->next = *head;
    *head = newnode;
}
void linkstack_pop(linkstack **head)
{
    if(head == NULL)
    {
        return;
    }
    if(*head == NULL)
    {
        return;
    }
    linkstack *cur = *head;
    *head = cur->next;
    free(cur);
    cur = NULL;
    return;
}
int linkstack_gettop(linkstack *head,linkstacktype value)
{
    if(head == NULL)
    {
        return 0;
    }
    *value = head->data;
    return 1;
}
void linkstack_print(linkstack *head)
{
    if(head == NULL)
    {
        return;
    }
    linkstack *cur = head;
    while(cur != NULL)
    {
        printf("[%c] ",cur->data);
        cur = cur->next;
    }
    printf("\n");
}

下面是测试函数以及实现效果
这里写图片描述
这里写图片描述这里写图片描述


如有错误请指正,谢谢

阅读更多
个人分类: 数据结构
所属专栏: 数据结构历程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

数据结构之链式栈的实现

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭