回 帖 发 新 帖 刷新版面

主题:一点点小毛病!知道哪里错了,但是不知道怎么改

#include<stdio.h>
#include"stdlib.h"
#define ERROR 0
#define OK 1

typedef struct Node
{
    char a;
    Node *next;
}Node,*LinkList;

InitList(LinkList *L)
{
    *L=(LinkList)malloc(sizeof(Node));
    (*L)->next=NULL;
}

void CreateFromTail(LinkList L)
{
    Node *r,*s;
    int flag;
    printf("建立表\n");
    flag=1;
    r=L;
    char b;
    while(flag)
    {
        b=getchar();
        if(b!='$')
        {
            s=(Node *)malloc(sizeof(Node));
            s->a=b;
            r->next=s;
            r=s;
        }
        else
        {
            flag=0;
            r->next=NULL;
        }
    }
}

int InsList(LinkList L,int i,char c)//*插入
{
    Node *pre,*s;
    int k;
    if(i<1) return ERROR;
    pre=L;
    k=0;
    while(pre!=NULL&&k<i-1)
    {
        pre=pre->next;
        k=k+1;
    }
    if(!pre)
    {
        printf("插入位置不合理!");
        return ERROR;
    }
    s=(Node *)malloc(sizeof(Node));
    s->a=c;
    s->next=pre->next;
    pre->next=s;
    return OK;
}

void main()
{
    LinkList L;
    InitList(&L);
    CreateFromTail(L);
    int i;
    char d;
    printf("插入的位置i\n");
    scanf("%d",&i);
    printf("插入的内容d\n");
    scanf("%c",&d);  [color=FF00FF]//*为什么就是不能传给值呢!?[/size][/color]
    InsList(L,i,d);
    Node *p;
    p=L->next;
    while(p!=NULL)
    {
        printf("%c ",p->a);
        p=p->next;
    }
    free(L);
}

这是链表的插入,但是很奇怪,其它部分都没有任何错
但是为什么就是给插入的内容赋值时,没有效果,不管是d=getchar();
还是scanf("%c",d);感觉好想直接跳过去了

回复列表 (共1个回复)

沙发

.....
 printf("插入的内容d\n");
   scanf("%c",&d);
scanf("%c",&d);//*为什么就是不能传给值呢!?

....



因为当你回车的时候.将'\n'看成了字符

我来回复

您尚未登录,请登录后再回复。点此登录或注册