链式栈的初始化与入栈出栈

#include

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -1

typedef int Status;

typedef int SElemType;

typedef struct node{

SElemType data;

struct node *next;

}SLnode,*SLinkList;

typedef struct {

SLinkList top,base;

int len;

}S_LinkList;

Status Build_S(S_LinkList &S)

{

int x;

SLinkList p,q;

printf("请输入数据,以-1结束:\n");

S.top=(SLinkList )malloc(sizeof(SLnode));

S.base=(SLinkList )malloc(sizeof(SLnode));

S.top->next=S.base;

q=S.base;

S.len=0;

while(scanf("%d",&x),x!=-1)

{

p=(SLinkList )malloc(sizeof(SLnode));

p->data=x;

S.top->next=p;

p->next=q;

q=p;

S.len++;

}

q=S.top->next;

while(q!=S.base)

{

printf("%d ",q->data);

q=q->next;

}

return OK;

}

void tishi()

{

printf("所有操作如下:\n");

printf("(1)采用链式存储实现栈的初始化操作。\n"); printf("(2)采用链式存储实现栈的入栈操作。\n"); printf("(3)采用链式存储实现栈的出栈操作。\n"); printf("(-1)退出\n");

printf("请选择:");

}

Status Push_S(S_LinkList &S)

{

int e;

printf("请输入要压入的元素:");

scanf("%d",&e);

SLinkList p,q;

q=S.top->next;

p=(SLinkList )malloc(sizeof(SLnode));

p->data=e;

S.top->next=p;

p->next=q;

q=p;

S.len++;

return OK;

}

Status Pop_S(S_LinkList &S)

{

SLinkList p;

p=S.top->next;

if(p!=S.base)

printf("%d\n",p->data);

return OK;

}

int main()

{

S_LinkList s;

int m;

do{

tishi();

scanf("%d",&m);

switch(m)

{

case 1:

Build_S(s);

break;

case 2:

Push_S(s);

break; case 3:

Pop_S(s); break; }

}while(m!=-1); return 0; }

#include

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -1

typedef int Status;

typedef int SElemType;

typedef struct node{

SElemType data;

struct node *next;

}SLnode,*SLinkList;

typedef struct {

SLinkList top,base;

int len;

}S_LinkList;

Status Build_S(S_LinkList &S)

{

int x;

SLinkList p,q;

printf("请输入数据,以-1结束:\n");

S.top=(SLinkList )malloc(sizeof(SLnode));

S.base=(SLinkList )malloc(sizeof(SLnode));

S.top->next=S.base;

q=S.base;

S.len=0;

while(scanf("%d",&x),x!=-1)

{

p=(SLinkList )malloc(sizeof(SLnode));

p->data=x;

S.top->next=p;

p->next=q;

q=p;

S.len++;

}

q=S.top->next;

while(q!=S.base)

{

printf("%d ",q->data);

q=q->next;

}

return OK;

}

void tishi()

{

printf("所有操作如下:\n");

printf("(1)采用链式存储实现栈的初始化操作。\n"); printf("(2)采用链式存储实现栈的入栈操作。\n"); printf("(3)采用链式存储实现栈的出栈操作。\n"); printf("(-1)退出\n");

printf("请选择:");

}

Status Push_S(S_LinkList &S)

{

int e;

printf("请输入要压入的元素:");

scanf("%d",&e);

SLinkList p,q;

q=S.top->next;

p=(SLinkList )malloc(sizeof(SLnode));

p->data=e;

S.top->next=p;

p->next=q;

q=p;

S.len++;

return OK;

}

Status Pop_S(S_LinkList &S)

{

SLinkList p;

p=S.top->next;

if(p!=S.base)

printf("%d\n",p->data);

return OK;

}

int main()

{

S_LinkList s;

int m;

do{

tishi();

scanf("%d",&m);

switch(m)

{

case 1:

Build_S(s);

break;

case 2:

Push_S(s);

break; case 3:

Pop_S(s); break; }

}while(m!=-1); return 0; }


相关文章

  • 数据结构中的名词解释
  • 本章主要介绍了如下一些基本概念:  数据结构:数据结构是研究数据元素之间抽象化的相互关系和这种关系在计算机中 的存储表示(即所谓数据的逻辑结构和物理结构),并对这种结构定义相适应的运算,设计出相应的算法,而且确保经过这些运算后所得到的新结 ...查看


  • 数据结构实验 栈和队列
  • 实验名称:栈和队列 班级: 学号:________ 姓名: 报告日期: 一.实验目的及要求 1. 栈的顺序存储和链式存储结构的类型定义方法及其基本操作算法 2. 队列的顺序存储和链式存储结构的类型定义方法及其基本操作算法 3. 掌握栈.队列 ...查看


  • 考点1:数据结构与算法
  • A )所谓算法就是计算方法 B )程序可以作为算法的一种描述方法 C )算法设计只需考虑得到计算结果 D )算法设计可以忽略算法的运算时间 题目解析:算法是一组有穷指令集,是解题方案的准确而完整的描述.通俗地说,算法就是计算机解题的过程, ...查看


  • 第八课 线性表的链式表示与实现
  • 本课主题: 线性表的链式表示与实现 教学目的: 掌握线性链表.单链表.静态链表的概念.表示及实现方法 教学重点: 线性链表之单链表的表示及实现方法. 教学难点: 线性链表的概念. 授课内容: 一.复习顺序表的定义. 二.线性链表的概念: 以 ...查看


  • 线性表链式结构实现实例
  • #include #include #include using namespace std; #define LIST_INIT_SIZE 10 //线性表存储空间初始分配量 #define LISTINCREMENT 10 //线性表存 ...查看


  • 线性表的链式存储结构
  • 贵州大学实验报告 学院:计算机科学与信息学院 专业: 班级: 程序清单如下: // 实验二-链表.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include #include ...查看


  • 数据结构与算法说明书
  • 数据结构与算法课程设计 题 目: 跳马问题 排序重构问题 . 目 录 目 录 ................................................................................. ...查看


  • 数据结构选择题集锦
  • 单项选择 ( B ) 1. 通常所说的主机是指∶ A) CPU B) CPU和内存 C) CPU.内存与外存 ( C )2. 在计算机内部,一切信息的存取.处理和传送的形式是∶ A) ACSII码 B) BCD码 C) 二进制 D) 十六进 ...查看


  • 河南工业大学实验报告_实验一 线性结构(二)--栈和队列的操作
  • xxxx 大学实验报告 课程名称 数据结构 实验项目 实验一 线性结构(二) --栈和队列的操作 院 系 信息学院计类系 专业班级 计类1501 姓 名 学 号 指导老师 日 期 批改日期 成 绩 一 实验目的 1. 熟练掌握栈的存储结构及 ...查看


热门内容