2011-12-01 121 views
1

我正在編寫的代碼,從用戶輸入的整數,並創建一個鏈表,然後打印出列表。整數應該放在列表的前面。從C鍵盤輸入鏈接列表

我需要一點幫助我不知道如何讓打印出的數字。
這裏是我的代碼:

Node.h

#include <stdio.h> 
#include <stdlib.h> 

#ifndef _nodes 
#define _nodes 

typedef struct node_s { 
     int d; 
     struct node_s *next; 
} node1; 

node1 list(int d); 
node1 addbegin(int d, node1 *head); 
node1 print(node1 *head); 

#endif 

node.c

#include "node.h" 
#include <stdio.h> 

node1 *list_nodes(int d){ 
    node1 *node; 
    node=(node1*)malloc(sizeof(node1)); 
    node->d=d; 
    node->next=NULL; 
    return(node); 
} 

node1 init(node1 *head){ 
    head->next=NULL; 
} 

node1 addbegin_nodes(node1 *head, int d){ 
    node1 *newnode; 
    newnode=(node1*)malloc(sizeof(node1)); 
    newnode=list_nodes(d); 
    head->next=newnode; 
    return(newnode); 
} 

node1 print_nodes(node1 *head){ 
    node1 *temp; 
    temp=(node1*)malloc(sizeof(node1)); 
    for(temp=head->next; 
     temp; 
    temp=temp->next) 
      printf("%d", temp->d); 
    return (d); 
} 

MAIN.C

#include <stdlib.h> 
#include <stdio.h> 
#include "node.h" 

int main(int argc, char* argv[]) { 
    node1 *head; 
    node1 *start; 
    int num; 

    printf("Please enter integers: "); 
    while(scanf("%d", &num)!=EOF){ 
      head=(node1*)malloc(sizeof(node1)); 
      list(head); 
      int i=0; 
      for(i=0;i>=0;i--){ 
        addbegin(head, num); 
        print(head); 
      } 
      printf("\n"); 
      print(head); 
    } 
    return 0; 
} 
+0

作業問題 – Almo

+0

EOF是一個特殊字符。你是否退出循環? – BlackBear

+0

是的,這是一個重要的問題,我一直在爲它工作了5小時,自殺!所以我最終決定尋求幫助。 EOF是文件的結尾。 – Cka91405

回答

0

更改print_nodes到

//recursive version 
void print_nodes(node1 *head) 
{ 
    if (head != NULL) 
    { 
     printf("%d\n", head->d); 
     print_nodes(head->next); 
    } 
} 

或者

// normal version 
void print_nodes(node1 *head) 
{ 
    node1 *temp = head; 

    while (temp != 0) 
    { 
     printf("%d\n", temp->d); 
     temp = temp->next; 
    } 
} 

我不知道現在爲什麼這些方法應該返回任何東西,請澄清意見。

+0

當我試着說它說node.c:24:警告:控制達到非無效函數的結尾 – Cka91405

+0

第24行是在你的代碼中,我不知道在我的函數上的點。這也是警告,不是一個錯誤。代碼是否工作 ?你試過兩個版本嗎? –

0
node1 init(node1 *head){ 
    head->next=NULL; 
} 

被定義爲返回node1,但似乎沒有返回語句。這可能是你的問題的一部分?