簡體   English   中英

C:向后打印鏈表

[英]C: Printing linked list backwards

試圖向后打印此列表

用戶輸入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;
    }
}

你有幾個名字print “東西”

  • 原型: RECORD* print(RECORD *it, int j);
  • 一個電話,在main內部: print (head, result);
  • 函數定義: RECORD* print(RECORD *it, int j) {
  • 嵌套函數定義: void print(node *it) {

前三個是連貫的,但最后一個是完全錯誤的。


標准C不允許嵌套函數。
未定義類型node
你仍然需要處理你的縮進:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM