简体   繁体   English

C:向后打印链表

[英]C: Printing linked list backwards

Trying to print this list backwards 试图向后打印此列表

user inputs 10 characters, program prints out 10 characters in original order then in reverse order. 用户输入10个字符,程序按原始顺序打印10个字符,然后按相反顺序打印。

Thanks to you guys I figured out the problem why it wouldn't print in regular order, now I'm having some trouble getting it to print in reverse order.. 谢谢你们,我想出了为什么它不能按正常顺序打印的问题,现在我遇到一些麻烦,让它以相反的顺序打印。

#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("%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;

        //my solution for printing it backwards..

        void print(node *it)
        {
            if(it!=NULL)
            {
                print(it->next);
                printf("%s-->",it->number);
            }
        }

        return;
    }
}

You have several "things" going by the name print 你有几个名字print “东西”

  • a prototype: RECORD* print(RECORD *it, int j); 原型: RECORD* print(RECORD *it, int j);
  • a call, inside main : print (head, result); 一个电话,在main内部: print (head, result);
  • a function definition: RECORD* print(RECORD *it, int j) { 函数定义: RECORD* print(RECORD *it, int j) {
  • a nested function definition: void print(node *it) { 嵌套函数定义: void print(node *it) {

The first three are coherent, but the last one is just plain wrong. 前三个是连贯的,但最后一个是完全错误的。

Also
Standard C does not allow nested functions. 标准C不允许嵌套函数。
The type node is not defined. 未定义类型node
You still need to work on your indentation :) 你仍然需要处理你的缩进:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM