C:反向打印链表

C:反向打印链表,c,linked-list,C,Linked List,正在尝试向后打印此列表 用户输入10个字符,程序按原始顺序打印10个字符,然后按相反顺序打印 多亏了你们,我解决了为什么不能按常规顺序打印的问题,现在我在按相反顺序打印时遇到了一些麻烦 #include <stdio.h> #include <stdlib.h> #include <string.h> #define strsize 30 typedef struct member { int number; char fname[strs

正在尝试向后打印此列表

用户输入10个字符,程序按原始顺序打印10个字符,然后按相反顺序打印

多亏了你们,我解决了为什么不能按常规顺序打印的问题,现在我在按相反顺序打印时遇到了一些麻烦

#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;
    }
}
#包括
#包括
#包括
#定义strsize 30
typedef结构成员
{
整数;
字符fname[strsize];
结构成员*next;
}记录;
记录*插入(记录*它);
记录*打印(记录*it,int j);
内部主(空)
{
int i;
双重结果;
记录*头,*p;
head=NULL;
结果=10;
对于(i=1;ifname,第一个);
cur->next=NULL;
if(it==NULL)
it=cur;
其他的
{
q=它;
while(q->next!=NULL)
q=q->next;
q->next=cur;
}
返回(it);
}
记录*打印(记录*it,int j)
{
记录*cur;
cur=it;
int i;
对于(i=1;ifname);
cur=cur->next;
//我的解决方案是向后打印。。
无效打印(节点*it)
{
如果(it!=NULL)
{
打印(it->next);
printf(“%s-->”,it->number);
}
}
返回;
}
}
您有几个“东西”被命名为
print

  • 原型:
    RECORD*print(RECORD*it,intj)
  • 一个调用,在
    main
    print(头,结果)中
  • 函数定义:
    RECORD*print(RECORD*it,intj){
  • 嵌套函数定义:
    void print(node*it){
前三个是连贯的,但最后一个是完全错误的


标准C不允许嵌套函数。
未定义类型
节点


你仍然需要在你的缩进中工作:

如果你能具体地指出问题所在,那就很有用了。换句话说,不要说“我有困难把它打印成相反的顺序”,考虑一下到底出了什么问题。例如:“它只打印前2个字符”。“我尝试反转链接列表,但我得到的字符是随机顺序的”。那么它到底出了什么问题?你的
print()
函数在我看来很好。哎哟,对不起。在void print中,它在“*”之前给了我一个errorerror:expected'),我该如何处理该嵌套函数?首先给它一个不同的名称,然后将其移出(剪切/粘贴)如果需要调整代码,您就可以享受更多乐趣:)仍然有问题,哈哈,我不是要编程的!