| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:请大家帮一下,数据结构和C的结合
只看楼主 加入收藏
zhy263033252
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2009-9-21
结帖率:50%
收藏
已结贴  问题点数:5 回复次数:3 
请大家帮一下,数据结构和C的结合
   

   各位能不能帮我修改一下
    做的是一个栈的   插入和删除
  


#include<string.h>

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2

typedef int Status;
typedef int Boolean;
typedef int SElemType;

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 20
typedef struct SqStack
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;


Status InitStack(SqStack *S)
{
(*S).base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!(*S).base)
exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}


Status Push(SqStack *S,SElemType e)
{
if((*S).top-(*S).base>=(*S).stacksize)
    {
    (*S).base=(SElemType*)realloc((*S).base,
    ((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
    if(!(*S).base)
    exit(OVERFLOW);
    (*S).top=(*S).base+(*S).stacksize;
    (*S).stacksize+=STACINCREMENT;
    }
*((*S).top)++=e;
return OK;
}

Status Pop(SqStack *S,SElemType *e)
{
if((*S).top==(*S).base)
return ERROR;
*e=*--(*S).top;
return OK;
}


Status StackTraverse(SqStack S,Status(*visit)(SElemType))
{
while(S.top>S.base)
visit(*S.base++);
printf("\n");
return OK;
}


void print(SElemType c)
{
printf("%s",c);
}


void main()
{
SqStack Sa;
SElemType c;
int m;
str i;
InitStack(&Sa);
printf("Please insert data: ");
scanf("%s",&i);
Push(&Sa,i);
printf("Sa= ");
StackTraverse(Sa,print);

while(1)
    {
    printf("Please choose now?\n");
    printf("1.Insert\n");
    printf("2.Delete\n");
    printf("3.Exit\n");
    printf("Please Input: ");
    scanf("%d",&m);

    if(m==1)
        {
        printf("Insert data.\n");
        scanf("%s",&i);
        Push(&Sa,i);
        printf("Sa= ");
        StackTraverse(Sa,print);
        }
    else if(m==2)
        {
        printf("Delete.\n")
        Pop(&Sa,i);
        printf("Sa= ");
        StackTraverse(Sa,print);
        }
    if(m==3) break;
    }
}
搜索更多相关主题的帖子: 结合 数据结构 
2009-09-25 17:15
血狼夜怨
Rank: 2
等 级:论坛游民
帖 子:13
专家分:22
注 册:2009-9-13
收藏
得分:1 
#include<string.h>
 
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
 
typedef int Status;
typedef int Boolean;
typedef int SElemType;
 
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 20
typedef struct SqStack
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
 
 
Status InitStack(SqStack *S)
{
(*S).base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!(*S).base)
exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}
 
 
Status Push(SqStack *S,SElemType e)
{
if((*S).top-(*S).base>=(*S).stacksize)
    {
    (*S).base=(SElemType*)realloc((*S).base,
    ((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
    if(!(*S).base)
    exit(OVERFLOW);
    (*S).top=(*S).base+(*S).stacksize;
    (*S).stacksize+=STACINCREMENT; //STACKINCREMENT
    }
*((*S).top)++=e;
return OK;
}
 
Status Pop(SqStack *S,SElemType *e)
{
if((*S).top==(*S).base)
return ERROR;
*e=*--(*S).top;
return OK;
}
 
 
Status StackTraverse(SqStack S,Status(*visit)(SElemType)) //visit()到底是什么函数,没有定义
{
while(S.top>S.base)
visit(*S.base++);
printf("\n");
return OK;
}
 
 
void print(SElemType c)
{
printf("%s",c);
}
 
 
void main()
{
SqStack Sa;
SElemType c;
int m;
str i; //貌似没有字符串类型
InitStack(&Sa);
printf("Please insert data: ");
scanf("%s",&i);
Push(&Sa,i);
printf("Sa= ");
StackTraverse(Sa,print);
 
while(1)
    {
    printf("Please choose now?\n");
    printf("1.Insert\n");
    printf("2.Delete\n");
    printf("3.Exit\n");
    printf("Please Input: ");
    scanf("%d",&m);
 
    if(m==1)
        {
        printf("Insert data.\n");
        scanf("%s",&i);
        Push(&Sa,i);
        printf("Sa= ");
        StackTraverse(Sa,print);
        }
    else if(m==2)
        {
        printf("Delete.\n")  // 语句少了;
        Pop(&Sa,i);
        printf("Sa= ");
        StackTraverse(Sa,print);
        }
    if(m==3) break;
    }
}
2009-09-26 18:29
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
收藏
得分:1 
感觉好遥远,还没看过数据结构。。。

参与切磋是美德,每天回帖即可获得10分可用分!
2009-09-26 18:39
witheart
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2009-9-27
收藏
得分:1 
。。。。。
2009-09-27 16:36
快速回复:请大家帮一下,数据结构和C的结合
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017046 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved