2011-06-17 96 views
3

我在寫一個使用鏈表的程序(如惡夢)。C編程:鏈接列表

無論如何,該程序的目的是輸入8個字符,並讓程序將字符打印回給您,並使用鏈接列表以相反的順序打印字符。

我到目前爲止得到了這個結果。這有很多錯誤(我認爲)。

的問題是

  • 當要求從它應該在的字符數讀取用戶的字符,而不必問了多少個字符

  • 而且,當它編譯它打印自動亂碼到屏幕上,例如我只是跑它和它印刷

    ¿r 
        (àõ($ê¿¿ 
    a¿r 
    (àõ($ê¿¿ 
    
    ¿r 
        (àõ($ê¿¿ 
    b¿r 
        (àõ($ê¿¿ 
    

這裏需要大量的幫助。這將是非常感謝!

當然代碼

#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, result; 
    RECORD *head, *p; 
    head=NULL; 
    printf("Enter the number of characters: "); 
    scanf("%d", &result); 

    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", &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; 
} 
+0

請使用代碼按鈕({})讓您的源代碼可讀。包含後顯然還有一些東西丟失了。 – user658991 2011-06-17 03:51:48

+0

聞起來像功課給我。 – 2011-06-17 03:54:13

+0

這是作業!我只是在尋找一些幫助 – Jennifer 2011-06-17 03:54:41

回答

3

您有:

中插入:

char first[strsize]; 

scanf("%c", &first); /* note the %c */ 

strcpy(cur->fname, first); 

打印

printf("%s \n", cur->fname); 

你應該有%s代替%c,因此在參數列表中將&format更改爲format,因爲format本身表示字符串要存儲的位置的地址。

所以scanf調用應該像下面

scanf("%s", first); 

另一件事。如果你在print函數中指定了返回類型,那麼你應該返回一些東西,或者不返回任何東西(聲明返回類型爲void)。這在這種情況下不會造成任何問題。

閱讀編譯器向您發出的警告消息,您會看到編譯器實際上已回答您的問題。

你需要做一些我認爲重新設計。例如,要遍歷鏈表,您不需要計數'j'。您可以通過檢查next鏈接是否爲NULL來檢測列表終止。

你的問題是要反向打印字符或字符串,所以你需要寫一些其他的打印功能比你寫的。

+0

正確!它也不是以相反的順序打印字符。甚至不像詹妮弗那樣刺痛了那部分。 – peskal 2011-06-17 04:05:42