c语言编程题 .键盘输入一行字符,每一个字符存放在一个链表节点,按反序把这行字符打印出来

2024-11-18 07:40:32
推荐回答(2个)
回答1:

#include
#include
void printit(char *str,int length) //返序输出函数
{

int i;
for(i=length-1;i>=0;i--) //从给定的字符串的最后一位依次向前遍历各字符
putchar(*(str+i)); //每向前一个字符即打印该字符,直至第一个字符为止。
}
int main()
{ char str[80]=""; //定义一个长度为80字节的字符串数组,并初始化
gets(str); //从键盘中输入一个字符串(遇回车键结束)
printit(str,strlen(str)); //调用上面定义的函数反序输出字符串
printf("\n"); //输入一个回车换行符,使后续输出能另起一行
return 0;
}

回答2:

#include 
#include 

struct node {
    char ch;
    struct node *next;
};

int main(int argc, char *argv[])
{
    int c;
    struct node *np, *head;
    
    head = NULL;
    while ((c = getchar()) != EOF && c != '\n') {
        np = (struct node *)malloc(sizeof(struct node));
        if (np != NULL) {
            np->ch = c;
            np->next = head;
            head = np;
        } else {
            fprintf(stderr, "memory is not available!\n");
            exit(1);
        }
    }
    
    for (np = head; np != NULL; np = np->next)
        putchar(np->ch);
    putchar('\n');
    
    return 0;
}