博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于用单链表实现栈结构
阅读量:7044 次
发布时间:2019-06-28

本文共 1915 字,大约阅读时间需要 6 分钟。

  栈是一种先进后出的数据结构,这里便不过多赘述。栈可以用数组实现,也可以用单链表实现。如果使用数组栈虽然比较方便但是由于数组大小是固定的,会造成一些问题。如果用单链表(从头部插入)实现栈结构,会比数组栈好一些。这里有一道数据结构水题http://helloc.openjudge.cn/xl/040/,就通过这个题来总结一下自己的学习成果。先直接上代码,代码如下:

#include
#include
#include
typedef struct node{ int data; struct node*next;}stack,*linkstack;int pd(char *s){ if(strcmp(s,"push")==0) return 1; else return 0;}linkstack push(int t,stack*h){ stack *p; p=(linkstack)malloc(sizeof(stack)); p->data=t; p->next=h; return p;}linkstack pop(stack*h,int *flag){ if(h->next==NULL) { *flag=0; return h; } else { stack*p; p=h->next; free(h); return p; }}void f(stack *h){ if(h->next==NULL) return; else { f(h->next); printf("%d ",h->data); }}int main(){ int n,i,t,l,temp,flag; char s[10]; scanf("%d",&t); for(l=0;l
next=NULL; scanf("%d",&n); for(i=0;i
View Code

先定义一个结构体,定义如下:

typedef struct  node{    int data;//存放数据    struct node*next;//指向下一个结点}stack,*linkstack;//linkstack就相当于struck node*,stack相当于struck node

申请一个头结点,并使头结点指向的下一个结点为空:

stack *h;h=(linkstack)malloc(sizeof(stack));//申请一个头结点,头结点不存放任何数据,但头结点并不为NULLh->next=NULL;//使头结点的next指向为空

当输入push时:

linkstack push(int t,stack*h){    stack *p;    p=(linkstack)malloc(sizeof(stack));//申请一个结点空间    p->data=t;//存放数据    p->next=h;//使该节点指向头结点    return p;//返回一个结构体指针,用于改变头指针指向;}

当输入pop时:

linkstack pop(stack*h,int *flag){    if(h->next==NULL)//如果当前头结点的next为空,说明栈已空    {    *flag=0;    return h;    }    else    {        stack*p;        p=h->next;//使p指向当前头结点h指向的下一个结点啊        free(h);//释放内存        return p;    }}

然后通过递归输出栈内元素:

void f(stack *h){    if(h->next==NULL)//当h指向的next为空时,说明栈已空    return;    else    {        f(h->next);        printf("%d ",h->data);    }}

 

转载于:https://www.cnblogs.com/swustzww/p/8358994.html

你可能感兴趣的文章
mac-android-虚机加速
查看>>
查看Linux系统版本的命令
查看>>
详解REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
查看>>
谷歌技术面试要点(Google面试)(14年5月20日交大专场)
查看>>
iOS: 懒加载
查看>>
木桶效应
查看>>
牛客网-《剑指offer》-矩形覆盖
查看>>
小儿支原体肺炎
查看>>
CentOS 6.2图形界面允许root用户登录
查看>>
HSI Controller IP Core
查看>>
Spring 3.0 AOP 之 AOP 术语 (一)
查看>>
mysql按年度、季度、月度、周、日统计查询的sql语句
查看>>
C#高性能TCP服务的多种实现方式
查看>>
实现图片缩放
查看>>
Dump类型说明
查看>>
jQuery获取url参数值
查看>>
关于mysql运行效率优化注意事项及要点
查看>>
Java 类加载与初始化
查看>>
set_magic_quotes_runtime
查看>>
Physiological Processes of Speech Production--Reading Notes (8)
查看>>