当前位置:编程学习 > C/C++ >>

利用链表实现栈

 

[cpp] 
//利用链表构建栈。 
//输入1 2 3 4 5 0时输出 5 4 3 2 1 
#include<stdio.h> 
#include<stdlib.h> 
#define true  1 
#define false 0 
 
typedef struct node{ //建立结构体 
    int num; 
    struct node *next; 
}Node; 
 
int push(Node **head, int num) //将一个数字压入以head为头的堆栈 
{    
    Node *nextNode; 
 
    if(NULL==(nextNode=(struct node *)malloc(sizeof(struct node )))){ 
        return false; 
    } 
    nextNode->num = num; 
     
    if(NULL == *head){ 
        nextNode->next = NULL; 
        *head = nextNode; 
        return true; 
    }  
    nextNode->next = *head;//尾插法 
    *head = nextNode; 
     
    return true; 

int pop(Node **head,int *num) //出栈 

    Node *temp; 
     
    if(NULL == *head)return false; 
     
    *num = (*head)->num; 
    temp = (*head)->next; 
     
    free(*head); 
     
    *head = temp; 
     
    return true; 

int main(int argc, char* argv[]) //主函数   

    int n=0,num; 
    Node *head; 
 
    head=NULL; 
     
    printf("Please input numbers end with 0 :\n"); 
     
    while(1){ //如果不是0,压栈 
        scanf("%d",&num); 
        if(0 == num)break; 
        push(&head,num); 
        n++; 
    }    
 
    while(pop(&head,&num)){ //出栈输出 
        printf("%d ", num); 
    } 
    printf("\nTotal : %d\n",n); 

 

作者:CreazyApple
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,