10.2-2 用单链表实现栈

来源:互联网 发布:气动打标机软件下载 编辑:程序博客网 时间:2024/05/20 17:40
//用单链表实现栈#include<stdio.h>#include<stdlib.h>typedef struct NODE{    char key;struct NODE* next;}NODE;NODE *L=NULL;void push(NODE* p){//插入的结点成为新的链表头    p->next=L;L=p;}void pop(void){//删除头结点    if(!L) puts("stack underflow!");    else{NODE*p=L;L=L->next;free(p);}}char top(void)//头结点值{    return L->key;}NODE* createnode(char key){    NODE*p=(NODE*)malloc(sizeof(NODE));    if(!p){        puts("memory exhausted.");exit(1);    }    p->key=key;    return p;}void traverse(){    NODE*p;    for(p=L;p;p=p->next)        putchar(p->key);    putchar('\n');}int main(void){    push(createnode('a'));    push(createnode('z'));    push(createnode('d'));    traverse();    putchar(top());putchar('\n');    pop();    traverse();    push(createnode('t'));    push(createnode('r'));    push(createnode('s'));    traverse();    putchar(top());putchar('\n');    pop();pop();pop();pop();    putchar(top());putchar('\n');    pop();    traverse();    return 0;}

0 0