关于字符串的进栈和出栈

不变の永远 2017-10-19 05:33:13
求助!!感激不尽!!
写了一个代码,结果出现了很多看不懂的错误,网上搜索半天,实在搞不懂咋回事, 好着急,希望有高手帮忙看看,改改,本人将感激不尽!!


#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
typedef int ElemType;

/*typedef struct Stake
{ PNODE Ptop;
PNODE Pbottom;
}STAKE*/


typedef struct Linknode
{ ElemType data;
struct linknode *next;
}LinkStNode;

struct node *top=NULL;

void InitStack(LinkStNode*&s)
{ s=(LinkStNode*)malloc(sizeof(LinkStNode*));
s->next=NULL;
}

bool IsEmpty(LinkStNode*s)
{ return(s->next==NULL);
}
void Push(LinkStNode*&s,ElemType e)
{ LinkStNode*p;
p=(LinkStNode*)malloc(sizeof(LinkStNode));
p->data=e;
p->next=s->next;
s->next=p;
}

bool Pop(LinkStNode*&s,ElemType&e)
{ LinkStNode*p;
if(s->next==NULL)//如果s->next==NULL,则说明栈空,没有元素进栈,无法出栈
printf("栈空,无法出栈!\n");
p=s->next;
e=p->data;
s->next=p->next;
free(p);
return true;
}

int main()
{
LinkStNode*s;
InitStack(LinkStNode*&s);

char str[100];
printf("请输入一个字符串:");
gets(str);
printf("输入的字符串为:");
puts(str);

int i=0;
while(str[0]!='\n')
{ push(str[i]);
i++;
}

struct node *p=top;
while(p!=NULL)
{
printf("%c\t",p->data);
p=p->next;
}
int e;
while(!IsEmpty(*s))//s->next!=NULL 只要栈底不为空,就不停的出栈
{ //IsEmpty()括号里面要有参数,否则出现error
printf("%c\t",Pop(*&s,&e));
}


}



cpp: In function 'void Push(LinkStNode*&, ElemType)':
error: cannot convert 'LinkStNode* {aka Linknode*}' to 'linknode*' in assignment
s->next=p;
^

cpp: In function 'bool Pop(LinkStNode*&, ElemType&)':
error: cannot convert 'linknode*' to 'LinkStNode* {aka Linknode*}' in assignment
p=s->next;
^
.cpp: In function 'int main()':
error: expected primary-expression before '*' token
InitStack(LinkStNode*&s);
^
cpp:85:19: error: 'push' was not declared in this scope
{ push(str[i]);
^
cpp:92:22: error: invalid use of incomplete type 'struct node'
printf("%c\t",p->data);
^
cpp:18:8: error: forward declaration of 'struct node'
struct node *top=NULL;
^
cpp:93:10: error: invalid use of incomplete type 'struct node'
p=p->next;
^
.cpp:18:8: error: forward declaration of 'struct node'
struct node *top=NULL;
^
.cpp:96:22: error: cannot convert 'LinkStNode {aka Linknode}' to 'LinkStNode* {aka Linknode*}' for argument '1' to 'bool IsEmpty(LinkStNode*)'
while(!IsEmpty(*s))//s->next!=NULL 只要栈底不为空,就不停的出栈
^
.cpp:98:31: error: invalid initialization of non-const reference of type 'ElemType& {aka int&}' from an rvalue of type 'int*'
printf("%c\t",Pop(*&s,&e));
^
cpp:36:6: error: in passing argument 2 of 'bool Pop(LinkStNode*&, ElemType&)'
bool Pop(LinkStNode*&s,ElemType&e)
^


编译结果...
--------
- 错误: 11
- 警告: 0
- 编译时间: 0.25s
...全文
609 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Moyiii 2017-10-24
  • 打赏
  • 举报
回复
这么一段代码,一二十个错误,真是不知道说什么好
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
typedef int ElemType;

/*typedef struct Stake
{  PNODE Ptop;
   PNODE Pbottom;
}STAKE*/


typedef struct Linknode
{
    ElemType data;
    struct Linknode *next;
}LinkStNode;



LinkStNode *top=NULL;

void InitStack(LinkStNode*&s)
{
    s=(LinkStNode*)malloc(sizeof(LinkStNode*));
    s->next=NULL;
}

bool IsEmpty(LinkStNode*s)
{
    return(s->next==NULL);
}

void Push(LinkStNode *&s, ElemType e)
{
    LinkStNode *p = NULL;
    p=(struct Linknode*)malloc(sizeof(LinkStNode));
    p->data=e;
    p->next=s->next;
    s->next=p;
}

bool Pop(LinkStNode*&s,ElemType&e)
{
    LinkStNode*p;
    if(s->next==NULL)//如果s->next==NULL,则说明栈空,没有元素进栈,无法出栈
        printf("栈空,无法出栈!\n");
    p=s->next;
    e=p->data;
    s->next=p->next;
    free(p);
    return true;
}

int main()
{
    LinkStNode*s;
    InitStack(s);

    char str[100];
    printf("请输入一个字符串:");
    gets(str);
    printf("输入的字符串为:");
    puts(str);

    int i=0;
    while(i < strlen(str))
    {
        Push(s, str[i]);
        i++;
    }

    LinkStNode *p=top;
    while(p!=NULL)
    {
        printf("%c\t",p->data);
        p=p->next;
    }
    int e;
    while(!IsEmpty(s))//s->next!=NULL 只要栈底不为空,就不停的出栈
    {
        //IsEmpty()括号里面要有参数,否则出现error
        Pop(s, e);
        printf("%c\t",e);
    }
}

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧