数据结构——链栈
本文最后更新于 151 天前,其中的信息可能已经有所发展或是发生改变。

1.文件注释内容

/**
 * @filename:    stacklinklist.c
 * @brief:       stacklinklist
 * @author:      philia
 * @date:        2026/2/1
 * @version:     ver1.0
 * @note         none
 * CopyRight (c) 2026   philia  All Right Reseverd
 */

2.头文件

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

3.栈初始化函数及结构体定义

typedef struct linklist {
    int data;
    struct linklist *next;
} lklist_t;

// 统一分配内存的逻辑,减少重复代码
lklist_t* create_node(int value) {
    lklist_t *node = (lklist_t *)calloc(1, sizeof(lklist_t));
    if (node) {
        node->data = value;
    }
    return node;
}

// 初始化
lklist_t* linklist_init() {
    return create_node(0); // 头节点 data 域通常不使用
}

4.入栈函数

// 入栈
bool push(lklist_t *link, int value) {
    lklist_t *node = create_node(value);
    if (!node) return false;

    node->next = link->next;
    link->next = node;
    printf("入栈成功,值为%d\n",value);
    return true;
}

5.出栈函数

//出栈
bool pop(lklist_t *link) {
    if(!link->next)
    {
        printf("栈为空,出栈失败!\n");
        return false;
    }
    lklist_t* firstnode = link->next;
    link->next = link->next->next;
    firstnode->next = NULL;
    printf("出栈成功,值为%d\n",firstnode->data);
    free(firstnode);
    return true;
}

6.遍历栈

//遍历栈
void linklist_printf(lklist_t *link) {
    lklist_t *curr = link->next;
    if (!curr) printf("栈为空,遍历失败!\n");
    while (curr) {
        printf("data = %d\n", curr->data);
        curr = curr->next;
    }
}

7.销毁栈

//释放内存!
void linklist_destroy(lklist_t *link) {
    lklist_t *curr = link;
    while (curr) {
        lklist_t *next = curr->next;
        free(curr);
        curr = next;
    }
}

8.编写主函数测试

int main() {
    lklist_t *list = linklist_init();
    push(list,10);
    push(list,20);
    push(list,30);
    push(list,40);
    pop(list);
    linklist_printf(list); 
    linklist_destroy(list);
    return 0;
    /*入栈成功,值为10
    入栈成功,值为20
    入栈成功,值为30
    入栈成功,值为40
    出栈成功,值为40
    data = 30
    data = 20
    data = 10*/
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇