2021-04-28

c语言实现链栈

 

#include <stdio.h>
#include <stdlib.h>
//定义 
typedef struct StackNode{
    int data;
    struct StackNode *next;
    
}StackNode, *LinkStack;
//初始化
bool InitList (LinkStack &S){
    S=(LinkStack)malloc(sizeof(StackNode));
       S->next=NULL;
       return true;
}
//入栈 
int Push(LinkStack &S,int n){

   S = (LinkStack)malloc(sizeof(StackNode));
   S = NULL;
   printf("请倒序输入要插入的值:\n");
    for(int i = 0;i<n;i++)
    {
        LinkStack p = (LinkStack)malloc(sizeof(StackNode));
        scanf("%d",&(p->data));
        p->next = S;
        S = p;    
    }

//求栈长 
int Length(LinkStack S){
    int count=0;

    while(S!=NULL){
        S=S->next;
        ++count;
    }
    return count;

//出栈
int Pop(LinkStack &S,int &e){
    if (S->next==NULL){
        printf("栈为空\n");
        return 0;
    }
    while(S!=NULL){
//    LinkStack p =S->next;
//    S->next=p->next;
//    e=p->data;
    e=S->data;
    LinkStack p=S;
    S=S->next;
    free(p);
    printf("%5d",e);
}
    return e;

//销毁
int Destroy (LinkStack &S){
    LinkStack q=S;
    while(S!=NULL){
        q=q->next;
        free(q);
        S=q;
    }
    printf("链栈已销毁");    

//取栈顶元素
int  
//主函数
int main(){
    //定义初始化 
    LinkStack S;
    if(InitList(S)){
        printf("链栈初始化成功!\n");
    } 
    else{
        printf("链栈初始化失败!\n");
    }
    //入栈
    int n;
    printf("输入要插入的元素个数:");
    scanf("%d",&n);
    Push(S, n);
    printf("栈长为;%d\n", Length(S));
    //出栈
    int e3;
    printf("所取栈中的元素为:\n"); 
    Pop(S,e3);
    printf("\n");
    Destroy (S);
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值