链栈的基本操作 C语言

#include<stdio.h>
#include<stdlib.h>
typedef char ElementType;
typedef struct node* LinkStack;
struct node {
    ElementType data;
    LinkStack next;
};
//初始化
void InitLinkStack(LinkStack *L) {
    (*L) = NULL;
}
//入栈
void PushStack(LinkStack *L, ElementType x) {
    LinkStack s;
    s = (LinkStack)malloc(sizeof(struct node));
    s->data = x;
    s->next = (*L); //L是栈顶元素
    (*L) = s;  //s成为新的栈顶元素
}
//出栈
void PopStack(LinkStack *L, ElementType *x) {
    if ((*L)->next == NULL) {
        printf("空栈");
    }
    else {
        LinkStack p;
        *x = (*L)->data;
        p = (*L);  //标记栈顶
        (*L) = (*L)->next;
        free(p); //出栈
    }
}
void PrintNode(LinkStack L) {
    while (L != NULL) {
        printf("%c", L->data);
        L = L->next;
    }
    printf("\n");
}
int main() {
    LinkStack s;
    ElementType c;
    ElementType* y;
    y = &c; 
    InitLinkStack(&s);
    printf("入栈元素为:\n");
    scanf("%c", &c);
    while (c != '\n') {
        PushStack(&s, c);
        scanf("%c", &c);
    }
    PrintNode(s);
    PopStack(&s, y);
    printf("出栈元素为:%c\n", *y);
    printf("栈中剩余元素为:\n");
    PrintNode(s);
}

 

转载于:https://www.cnblogs.com/yudongxuan/p/7728195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值