注册 登录
编程论坛 数据结构与算法

帮忙讲解下程序 谢了

情非得已 发布于 2011-04-24 22:00, 751 次点击
if(!p)
printf("error");
p->top=-1;
13 回复
#2
诸葛修勤2011-04-24 22:40
如果P 为NULL 执行printf("error");

否则跳过printf("error");
直接执行p->top=-1;
#3
情非得已2011-04-24 22:41
谢谢了
#4
诸葛修勤2011-04-24 22:43
恩  没事
#5
情非得已2011-04-24 22:45
你好朋友 我有一个完整的长程序 你能给逐句解释下吗 感激不尽
#6
诸葛修勤2011-04-24 22:52
拿到c区去吧 那里的人多点
#7
情非得已2011-04-24 22:54
感觉你听强的想让你给帮忙 讲解下 拜托了
#8
情非得已2011-04-24 22:55
拜托了 朋友
#include<stdio.h>
#include<stdlib.h>
#define MAX  20
typedef struct {
int stack[MAX];
int top;
}sqstack;
void Initstack(sqstack *p)   /*初始化*/
{
if(!p)
printf("error");
p->top=-1;\
}
void Push(sqstack *p,int x)
{
if(p->top<MAX-1)
{
p->top=p->top+1;
p->stack[p->top]=x;
}
else printf("overflow!\n");
}
int Pop(sqstack *p)
{
int x;
if(p->top!=0)
{
x=p->stack[p->top];
printf("以前的栈顶元素%d已经被删除 !\n",x);
p->top=p->top-1;
return x;
}
  else
  {
  printf("underflow!\n");
  return 0;
  }
  }
  int Gettop(sqstack *p)
  {
  int x;
  if(p->top!=0)
  {
  x=p->stack[p->top];
  return x;
  }
  else
  {
  printf("underflow\n");
  return 0;
  }
  }
  void Outstack(sqstack *p)
  {
  int i;
  printf("\n");
  if(p->top<0)
  {
  printf("这是一个空栈 !");
  printf("\n");
    }
    else
    for(i=p->top;i>=0;i--)
       printf("第 %d 个数据元素是: %d\n",i,p->stack[i]);

    }
    void Setempty(sqstack *p)
    {
    p->top=-1;
    }
    main()
    {
    sqstack *q;
    int y,cord;
    int a;
    do{
    printf("\n");
    printf("第一次使用必须初始化 !\n");
    printf("\n");
    printf("\n            主菜单                \n");
    printf("\n      1    初始化顺序栈           \n");
    printf("\n      2    插入一个元素           \n");
    printf("\n      3    删除栈顶元素           \n");
    printf("\n      4    取栈顶元素             \n");
    printf("\n      5    置空顺序栈             \n");
    printf("\n      6    结束程序运行           \n");
    printf("\n----------------------------------\n");
    printf("请输入您的选择 (1,2,3,4,5,6)");
    scanf("%d",&cord);
    printf("\n");
    switch(cord)
    {
    case 1:
    {
    q=(sqstack *)malloc(sizeof(sqstack));
    Initstack(q);
    Outstack(q);
    }break;
    case 2:
   { printf("请输入要插入的数据元素 :a=");
    scanf("%d",&a);
    Push(q,a);
    Outstack(q);
    }break;
    case 3:
    {
    Pop(q);
    Outstack(q);
    }
    break;
    case 4:
    {
    y=Gettop(q);
    printf("\n 栈顶元素为 : %d",y);
    Outstack(q);
    }break;
    case 5:
    {
    Setempty(q);
    printf("\n顺序栈被置空! \n");
    Outstack(q);
    }break;
    case 6:
    exit(0);
    }
    }while(cord<=6);
    }
#9
诸葛修勤2011-04-24 22:56
你贴出来吧 明天版主可能有时间
#10
情非得已2011-04-24 23:01
喔行  谢谢你了
#11
寒风中的细雨2011-04-25 09:35
程序要实现的功能

每个函数的作用

基本语言语法



栈的基本操作
#12
迷糊战神no12011-04-25 19:31
就是如果p=null;就执行  下一句    在执行第三局    否则   直接执行    第三句   栈顶指针减一  出战
#13
情非得已2011-04-25 20:26
谢谢各位了 能不能再具体点
#14
情非得已2011-04-25 23:01
版主能不能讲的具体点 谢谢了
1