weixin_57030067 2021-10-12 19:57 采纳率: 50%
浏览 29
已结题

请帮我把c++语法改成c语法

有大神可以帮我把这段代码的c++语法改成c的吗,把引用&改成c的语法
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define Elemtype int
#define maxsize 100

typedef struct LNode
{
Elemtype data;
struct LNode *next;
}LNode,*Linklist;

typedef struct sqlist
{
Elemtype *elem;
int length;
}sqlist;

int init(sqlist &T)
{
T.elem=new Elemtype[maxsize];
if(!T.elem)return ERROR;
T.length=0;
return OK;
}

void creat(Linklist &L,int n)
{
Linklist p,q;
int i;
Elemtype x;
L=new LNode;
L->next=NULL;
p=L;
for(i=0;i<n;i++)
{
q=new LNode;
scanf("%d",&x);
q->data=x;
q->next=NULL;
p->next=q;
p=q;
}
}

int load(sqlist &T)
{
int i;
if(T.length==0)return ERROR;
for(i=T.length-1;i>=0;i--)
{
printf("%d ",T.elem[i]);
}
printf("\n");
return OK;
}

int reverse(Linklist &L,sqlist &T)
{
int i;
Linklist p;
p=L->next;
if(p==NULL)return ERROR;
for(i=0;p!=NULL;i++)
{
T.elem[i]=p->data;
T.length++;
p=p->next;
}
return i;
}

int main()
{
Linklist L;
sqlist T;
int n;
init(T);
printf("输入:\n");
scanf("%d",&n);
creat(L,n);
reverse(L,T);
printf("输出:\n");
load(T);
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-10-12 20:24
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include<malloc.h>
    #define ERROR 0
    #define OK 1
    #define Elemtype int
    #define maxsize 100
    
    typedef struct LNode
    {
        Elemtype     data;
        struct LNode *next;
    }LNode,*Linklist;
    
    typedef struct sqlist
    {
        Elemtype *elem;
        int length;
    }sqlist;
    
    int init(sqlist* T)
    {
        T->elem = (Elemtype*)malloc(sizeof(Elemtype)*maxsize);
        if(!T->elem) return ERROR;
        T->length=0;
        return OK;
    }
    
    void creat(Linklist *L,int n)
    {
        Linklist p,q;
        int i;
        Elemtype x;
        (*L) = (Linklist)malloc(sizeof(LNode));
        (*L)->next=NULL;
        p=(*L);
        for(i=0;i<n;i++)
        {
           q = (LNode*)malloc(sizeof(LNode));
           scanf("%d",&x);
           q->data=x;
           q->next=NULL;
           p->next=q;
           p=q;
        }
    }
    
    int load(sqlist *T)
    {
        int i;
        if(T->length==0)return ERROR;
        for(i=T->length-1;i>=0;i--)
        {
            printf("%d ",T->elem[i]);
        }
        printf("\n");
        return OK;
    }
    
    int reverse(Linklist L,sqlist* T)
    {
        int i;
        Linklist p;
        p=L->next;
        if(p==NULL)return ERROR;
        for(i=0;p!=NULL;i++)
        {
            T->elem[i]=p->data;
            T->length++;
            p=p->next;
        }
        return i;
    }
    
    int main()
    {
        Linklist L;
        sqlist T;
        int n;
        init(&T);
        printf("输入:\n");
        scanf("%d",&n);
        creat(&L,n);
    
        reverse(L,&T);
        printf("输出:\n");
        load(&T);
        
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月20日
  • 已采纳回答 10月12日
  • 创建了问题 10月12日

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能