C语言有关链表的问题

为什么显示出来的是非数字?#include<stdio.h>#include<stdlib.h>#include<ctype.h>typedefstructdate{ch... 为什么显示出来的是非数字?#include <stdio.h>#include <stdlib.h>#include <ctype.h>typedef struct date{ char *a; struct date *next;}sin1;sin1 *qq=NULL,*n; void enter(char *s){ n=malloc(sizeof(sin1)); n->a=s; n->next=qq; qq=n;}char *quit(){ char *z=malloc(sizeof(char)); z=qq->a; return z;}int main (){ char a[10]="1q2e34",s[2]; char *q; int z=0; s[1]='\0'; while(a[z]!='\0'){ s[0]=a[z]; if( isdigit ( s[0] )==0 ){ ////当s[0]不是数字时从链表中取出最近存入的字符 q=malloc(sizeof(char)); q=quit(); printf("q : %s\n",q);} if( isdigit ( s[0] ) ){ //当 s[0] 是数字时,存入链表 enter(s); } z++;} return 0;}
前面表述有问题
为什么打印指针q没有显示‘1’,‘2’呢?
展开
 我来答
匿名用户
2016-09-08
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct date{
 char *a;
 struct date *next;
} sin1;
 sin1 *qq=NULL,*n; 
 void enter(char *s){
  n=malloc(sizeof(sin1));
  n->a=s;        // 此处有问题,每次让这个节点的这个指针的值为s,
  // 而s是一个固定的字符数组, 在main函数中,每次给s[0]虽然赋了不同的值,
  // 但其实是把以前存在里面的数字给覆盖掉了,
  // 所以只能看到每次最后赋值进去的字母,
  // 也就是你所看到的情况了 
#include <stdlib.h>
#include <ctype.h>
typedef struct date{
 char *a;
 struct date *next;
} sin1;
 sin1 *qq=NULL,*n; 
 void enter(char *s){
  n=malloc(sizeof(sin1));
  n->a=s;
  n->next=qq;
  qq=n;
 }
 char *quit(){
  char *z=malloc(sizeof(char));
  z=qq->a;
  return z;
 }
int main (){
 char a[10]="1q2e34",s[2];
 char *q;
 int z=0;
 s[1]='\0';
 while(a[z]!='\0'){
  s[0]=a[z];
  if( isdigit ( s[0] )==0 ){ ////当s[0]不是数字时从链表中取出最近存入的字符
   q=malloc(sizeof(char));
   q=quit();
   printf("q : %s\n",q);
  }
  if( isdigit ( s[0] ) ){ //当 s[0] 是数字时,存入链表
   enter(s);
  }
  z++;
 }
 return 0;
}
  n->next=qq;
  qq=n;
 }
 char *quit(){
  char *z=malloc(sizeof(char));
  z=qq->a;
  return z;
 }
int main (){
 char a[10]="1q2e34",s[2];
 char *q;
 int z=0;
 s[1]='\0';
 while(a[z]!='\0'){
  s[0]=a[z];
  if( isdigit ( s[0] )==0 ){ ////当s[0]不是数字时从链表中取出最近存入的字符
   q=malloc(sizeof(char));
   q=quit();
   printf("q : %s\n",q);
  }
  if( isdigit ( s[0] ) ){ //当 s[0] 是数字时,存入链表
   enter(s);
  }
  z++;
 }
 return 0;
}
百度网友6e9c72914
2016-09-08 · 超过11用户采纳过TA的回答
知道答主
回答量:50
采纳率:50%
帮助的人:19.3万
展开全部
全部代码只有1句printf, 而这句printf的控制符是%s, 请问如何打印出数字?
追问
对不起,我表述有误,
指针q为什么会显示字符'q','e',而不是前面的'1','2'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式