資料結構 C link list 有請高手20point

typedef struct list /* 鏈結串列結構宣告 */

{

int data; /* 節點內容 */

struct list *link; /* 指向下一個節點的位址 */

}node;

void print_list(node *head) /* 印出鏈結串列的內容 */

{

node *ptr;

for(ptr=head; ptr!=NULL; ptr=ptr->link)

printf("[%d]", ptr->data);

printf("\n");

}

int main()

{

int gg=9;

print_list(&gg);

system("pause");

return 0;

}

為什麼我印9之後 後面還印出兩個怪怪的東西= =

還有如果我要讓使用者輸入1 2 3 4 5(值中間用空白鍵分開)

然後輸出1 2 3 4 5

main 裡面要怎麼打呢

謝謝了^_^

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    typedef struct list /* 鏈結串列結構宣告 */

    {

    int data; /* 節點內容 */

    struct list *link; /* 指向下一個節點的位址 */

    }NODE;

    void print_list(NODE *h) /* 印出鏈結串列的內容 */

    {

    for(; NULL != h; h=h->link) printf("[%d] ", h->data);

    printf("\n");

    }

    NODE *createList(int i) { /* create a new list with initial node */

    NODE *n = malloc(*n);

    If(n) {n->data = i; n->link=NULL;} /* save data */

    return n;

    }

    NODE *insertList(Node *h, int i) { /* insert at the end */

    if(NULL==h) return createList(i);

    for(ret=0; NULL != h->link; h=h->link, ++ret);

    if( NULL != (h->link = malloc(sizeof(*h)))) {h->link->data = i; h->link->link=NULL;}

    return h->link; /* return the new node on the list */

    }

    int main()

    {

    int a[]={10, 20, 30, 40, 50, 60};

    int i;

    NODE *n, *p;

    For (i = sizeof(a)/sizeof(a[0])-1, n=p=NULL;

    0 <= i && NULL != (n=insertList(n,a[i])) && (p || (p=n));

    --i);

    print_list(p); system("pause");

    return 0;

    }

  • Lv 7
    1 decade ago

    你的程式會顯示9之後還會印出怪怪的東西是因為你在呼叫print_list()時傳入gg.gg的值是9.其型態是int(整數).並不是list.但你卻把它當成list用.就像你上戰場打仗時把玩具槍當真槍.那不當"天"兵才怪.你要先做個list的變數.傳那的變數進print_list()才對.

Still have questions? Get your answers by asking now.