C语言链表问题。请问为什么下面代码没有输出呢?
发布网友
发布时间:2022-08-01 19:58
我来回答
共2个回答
热心网友
时间:2024-01-04 05:17
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int i=0;
typedef struct LINKED
{
int data;
char fuhao;
int type;
struct LINKED *next;
}Linked;
void nadd(Linked **ptail,int x) //Linked **ptail是"指针的指针"
{
Linked *pnew=(Linked*)malloc(sizeof(Linked));
pnew->data=x;
pnew->type=0;//0表示数值
pnew->next=NULL;
(*ptail)->next=pnew;
*ptail=pnew;
//ptail->next=pnew;
//原代码ptail=pnew;
//原代码ptail->next=NULL;
}
//加入符号
void stradd(Linked **ptail,char ch) //Linked **ptail是"指针的指针"
{
Linked *pnew=(Linked*)malloc(sizeof(Linked));
pnew->fuhao=ch;
pnew->type=1;//1表示符号
pnew->next=NULL;
(*ptail)->next=pnew;
*ptail=pnew;
//原代码ptail->next=pnew;
//原代码ptail=pnew;
//原代码ptail->next=NULL;
}
int qiu(char* ch)
{
int x,s=0;
while(ch[i]>='0'&&ch[i]<='9')
{
x=ch[i]-'0';
i++;
s=s*10+x;
}
return s;
}
int main()
{
int m;
char str[10];
Linked *head=(Linked*)malloc(sizeof(Linked));
Linked *ptail,*p;
head->next=NULL;
ptail=head;
printf("请输入表达式:");
scanf("%s",str);
//原代码for(;i<sizeof(str)/sizeof(char);i++)
for(;i<strlen(str);i++)
{
if(str[i]>='0'&&str[i]<='9')
{
m=qiu(str);
i--;
//ptail本身是指针,其数值有变化,需要用到"指针的指针"
nadd(&ptail,m); //原代码nadd(ptail,m);
}
else
{
//ptail本身是指针,其数值有变化,需要用到"指针的指针"
stradd(&ptail,str[i]); //原代码stradd(ptail,str[i]);
}
}
p=head->next;
while(p!=NULL)
{
if(p->type==0)
printf("%d ",p->data); //字符末尾加了"空格"
else
printf("%c ",p->fuhao); //字符末尾加了"空格"
p=p->next;
}
printf("\n");
return 0;
}
热心网友
时间:2024-01-04 05:17
太长了。。。。
居然显示不出来。。。。