C: Проблема с печатью связанного списка - PullRequest
0 голосов
/ 24 августа 2011

У меня возникла небольшая проблема с распечаткой этого связанного списка.

Предполагается, что программа берет список из 10 символов от пользователя и распечатывает его в том порядке, в котором он указан.получил его, а затем в обратном порядке (пока не получил это далеко).Тем не менее, он не читает первый символ.

Например

«Пожалуйста, введите символы» Пользователь вводит (программа не читает a) bcdefghijk

, затем печатаетbcdefghijk

Пытался сделать это как можно более подробным.

Спасибо !!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define strsize 30

typedef struct member
{
    int number;
    char fname[strsize];
    struct member *next;
}RECORD;

RECORD* insert (RECORD *it);
RECORD* print(RECORD *it, int j);

int main (void)
{
    int i;
    double result;
    RECORD *head, *p;
    head=NULL;
    result=10;

    for (i=1; i<=result; i++)
        head=insert (head);
    print (head, result);

    return 0;

}

RECORD* insert (RECORD *it)
{

    RECORD *cur, *q;
    int num;
    char junk;
    char first[strsize];
    printf("Enter a character:");
    scanf("%c", &junk);
    scanf("%s", &first);

    cur=(RECORD *) malloc(sizeof(RECORD));

    strcpy(cur->fname, first);
    cur->next=NULL;

    if (it==NULL)
        it=cur;

    else
    {
        q=it;
        while (q->next!=NULL)
            q=q->next;
        q->next=cur;
    }
    return (it);

}

RECORD* print(RECORD *it, int j)
{
    RECORD *cur;
    cur=it;
    int i;
    for(i=1;i<=j;i++)
    {
        printf("%s \n", cur->fname);
        cur=cur->next;
    }
    return;
}

Ответы [ 3 ]

1 голос
/ 24 августа 2011

Кроме того, обратите внимание, что когда вы читаете этот первый символ, я почти уверен, что он проигнорирует «k», потому что вы говорите, что он печатает только 10 символов, а вы даете ему 11.

Наконец, обычная практика кодирования - начинать циклы с 0 и идти до

for (i=1; i<=result; i++)

ПОЖАЛУЙСТА, используйте

for (i=0; i<result; i++)

Это важная привычка, потому что большинство вещей, которые вы будете индексировать, начинаются с индекса 0. Это также делает ваш код гораздо более читаемым для программистов, которые почти никогда не видят циклы <= в for. Обратите внимание, что два набора условий повторяются одинаковое количество раз. </p>

0 голосов
/ 24 августа 2011

Не принимая во внимание другие ошибки, ваша непосредственная проблема - дополнительная scanf. Символ junk игнорируется.

printf("Enter a character:");
scanf("%c", &junk);
scanf("%s", &first);

Кроме того, проверьте уровень предупреждений вашего компилятора, и учитывайте предупреждения

0 голосов
/ 24 августа 2011

However, it's not reading the first character. Вы читаете это и отбрасываете это. Смотри scanf("%c", &junk);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...