第五周项目2

来源:互联网 发布:影楼行业全国数据 编辑:程序博客网 时间:2024/05/22 19:57
/* 烟台大学计算机学院  文件名称:ycddd.cpp  作者:于琛  完成日期:2017年10月6日  问题描述:定义链栈存储结构,实现其基本运算输入描述:无输出描述:链栈的操作以及栈的操作后的元素输出,以及出栈的元素输出 */ #include <stdio.h>#include "ltsk.h"int main(){    ElemType e;    LinkStNode *s;    printf("(1)初始化链栈s\n");    InitStack(s);    printf("(2)链栈为%s\n",(StackEmpty(s)?"空":"非空"));    printf("(3)依次进链栈元素a,b,c,d,e\n");    Push(s,'a');    Push(s,'b');    Push(s,'c');    Push(s,'d');    Push(s,'e');    printf("(4)链栈为%s\n",(StackEmpty(s)?"空":"非空"));    printf("(5)链栈长度:%d\n",StackLength(s));    printf("(6)从链栈顶到链栈底元素:");DispStack(s);    printf("(7)出链栈序列:");    while (!StackEmpty(s))    {   Pop(s,e);        printf("%c ",e);    }    printf("\n");    printf("(8)链栈为%s\n",(StackEmpty(s)?"空":"非空"));    printf("(9)释放链栈\n");    DestroyStack(s);    return 0;}#include <stdio.h>#include <malloc.h>#include "ltsk.h"void InitStack(LinkStNode *&s)//初始化{    s=(LinkStNode *)malloc(sizeof(LinkStNode));//动态分配空间    s->next=NULL;}void DestroyStack(LinkStNode *&s){    LinkStNode *pre=s,*p=s->next;    while(p!=NULL)//循环释放空间    {        free(pre);        pre=p;        p=pre->next;    }    free(pre);}int  StackLength(LinkStNode *s){    int i=0;    LinkStNode *p;    p=s;    while(p!=NULL)//计算链栈元素个数    {        i++;//用i计数        p=p->next;    }    return i;}bool StackEmpty(LinkStNode *s){    return(s->next==NULL);}void Push(LinkStNode *&s,ElemType e)//入栈{    LinkStNode *p;    p=(LinkStNode *)malloc(sizeof(LinkStNode));    p->data=e;//存放e    p->next=s->next;//将p节点插入作为首节点    s->next=p;}bool Pop(LinkStNode *&s,ElemType &e){    LinkStNode *p;    if(s->next==NULL)//栈空的情况    {        return false;    }    p=s->next;//提取p节点给e    e=p->data;    s->next=p->next;    free(p);    return true;}bool GetTop(LinkStNode *s,ElemType &e){    if(s->next==NULL)//栈空的情况        return false;    e=s->next->data;//将栈顶元素取出给e    return true;}void DispStack(LinkStNode *s){   LinkStNode *p=s->next;    while (p!=NULL)//输出链栈元素    {        printf("%c ",p->data);        p=p->next;    }    printf("\n");}                                                          #include <stdio.h>typedef char ElemType;typedef struct linknode{    ElemType data;    struct linknode *next;}LinkStNode;void InitStack(LinkStNode *&s);//初始化链栈void DestroyStack(LinkStNode *&s);//销毁链栈int  StackLength(LinkStNode *s);//计算长度bool StackEmpty(LinkStNode *s);//判断是否为空void Push(LinkStNode *&s,ElemType e);  //入栈bool Pop(LinkStNode *&s,ElemType &e);  //出栈bool GetTop(LinkStNode *s,ElemType &e);  //取栈顶元素void DispStack(LinkStNode *s);  //输出栈中元素


运行结果:



学习心得:

学会了用链栈算法来对链栈进行操作。

原创粉丝点击