栈的基本练习



#include <stdlib.h>

#include <stdio.h>

typedef char DataType;

typedef struct node

{ DataType data;

struct node *next;

}LSNode;    /*LSNode为链栈结点类型*/

/*---------------------------------------------------------------------------------------------------*/

/*入栈操作,。top为栈顶指针,x为待插入节点数据域的值*/

LSNode* pushls(LSNode* top,DataType x)

{           

  LSNode *p;

   p=(LSNode*)malloc(sizeof(LSNode));

   p->data=x;

   p->next=top;

   return p;


}

/*---------------------------------------------------------------------------------------------------*/

/*出栈操作,删除栈顶节点。top为栈顶指针*/

LSNode* popls(LSNode* top)

{            

 LSNode* s;

if(top){

s=top;

    top=top->next;

free(s);

return top;}

}

/*---------------------------------------------------------------------------------------------------*/

/*输出中,数据元素的值,top为栈顶指针*/

void display(LSNode* top)

{

 LSNode* p=top;

 while (p!=NULL)

{ printf("%c ",p->data);

      p=p->next;

}

}

/*---------------------------------------------------------------------------------------------------*/

void main()

{LSNode* top;      /*构建一个空链栈*/

 top=NULL;

 LSNode* s;

 

/*从键盘上输入5个元素,依次并插入到链栈中(完成入栈操作)*/


for(int i=0;i<5;i++){

  printf("请输入第%d个字符",i);

  DataType x;

   scanf("%s",&x);

  top=pushls( top, x);

}



display(top);      /*输出链栈中元素*/

/*连续删除链栈中的3各元素(完成出栈操作)*/

for(i=0;i<3;i++){

top=popls( top);

}



display(top);

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值