码迷,mamicode.com
首页 > 其他好文 > 详细

喜羊羊系列之数据结构栈链

时间:2015-04-11 13:16:20      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:数据结构      链表   数据   指针   

博客地址:http://blog.csdn.net/muyang_ren

栈链数据链接示意图

技术分享

top为指向最后的节点的指针,栈头为一个NULL空地址

1、头文件

head.h

#ifndef __linkstack_H__
#define __linkstack_H__

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

typedef int datatype;
typedef struct node{
    datatype data;
    struct node *next;
}linkstack, *linkstack_p;

extern void linkstack_add(linkstack_p *, int ); //入栈
extern void linkstack_init(linkstack_p * );//初始化表头
extern void linkstack_out(linkstack_p *,int *);//出栈
extern int top_empty(const linkstack_p);//判断地址是否为空
#endif

2、栈链实现函数

linkstack.c

#include "head.h"

//设置栈表头为null
void linkstack_init(linkstack_p *top){
    *top=NULL;
}

//开辟新的节点
void linkstack_new(linkstack_p *new){
    
    *new=(linkstack_p)malloc(sizeof(linkstack));
    if(NULL == *new){
        perror("malloc\n");
        exit(-1);
    }
}

//入栈
void linkstack_add(linkstack_p *top , int n){
    
    linkstack_p new;
    linkstack_new(&new);
    
    new->data = n;
    
    //入栈
    new->next=*top;
    *top = new;
}

//栈为空
int top_empty(const linkstack_p top){
    if(top==NULL)
        return 0;
    else
        return 1;
}

//出栈
void linkstack_out(linkstack_p *top, int *num){
    
    linkstack_p p;
    p=*top;

    *num = (*top)->data;  //将栈中最后进的数据放进num的地址
    *top = (*top)->next;
    free(p);
}

3、实现功能函数

main.c

#include "head.h"
//实现 10 进制数转换成 8 进制数

int main(void)
{
    int num, n;
    char *ch="0";
    linkstack_p top;

    linkstack_init(&top);              //初始化双向链表
    
    printf("输入十进数:");
    scanf("%d",&num);
    if(num<0)
    {
        ch="-0";
        num = -num;
    }
    
    while(num!=0){
        linkstack_add(&top,num%8);
        num=num/8;
    }
    
    printf("八进制数为: %s",ch);
    
    while(top_empty(top)){
        linkstack_out(&top,&n);
        printf("%d",n);
    }
    printf("\n");

    return 0;
}


技术分享

喜羊羊系列之数据结构栈链

标签:数据结构      链表   数据   指针   

原文地址:http://blog.csdn.net/muyang_ren/article/details/44994275

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!