小柔 發問時間: 電腦與網際網路程式設計 · 2 0 年前

鏈結串列的問題~想好久了~快幫幫我(急)

老師給了這麼一段程式叫我們完成她

#define NULL 0

struct list{

char data;

struct list *next;

};

struct list *string_to_list(char s[])

{

struct list *head;

struct list *tail;

int i;

head=NULL;

if(s[0]!=\'\\0\'){

head=(struct list*)malloc(sizeof(struct list));

head->data=s[0];

tail=head;

for(i=1;s[i]!=\'\\0\';i++){

tail->next=(struct list*)malloc(sizeof(struct list));

tail=tail->next;

tail->data=s[i];

}

tail->next=NULL;

}return head;

}

他希望結果是

假如我輸入:AB

就必須跑出

head->A->B->NULL

1 個解答

評分
  • Rody
    Lv 5
    2 0 年前
    最佳解答

    其實你們老師已經給了很完整的副程式啦,剩下只是去呼叫他,使用他而已,以下程式我只有加了簡單的呼叫,編譯過確定可以執行

    #include <stdio.h>

    #include <malloc.h>

    #define NULL 0

    struct list{

    char data;

    struct list *next;

    };

    struct list *string_to_list(char s[])

    {

    struct list *head;

    struct list *tail;

    int i;

    head=NULL;

    if(s[0]!='\0'){

    head=(struct list*)malloc(sizeof(struct list));

    head->data=s[0];

    tail=head;

    for(i=1;s[i]!='\0';i++){

    tail->next=(struct list*)malloc(sizeof(struct list));

    tail=tail->next;

    tail->data=s[i];

    }

    tail->next=NULL;

    }return head;

    }

    void main(void){

    struct list *mylist;

    char s[100];

    puts("Please input a string (less than 100 chars)...");

    gets(s);

    puts("Processing...");

    mylist=string_to_list(s);

    printf("The result is:\nhead->");

    while(mylist!=NULL){

    printf("%c->",mylist->data);

    mylist=mylist->next;

    }

    puts("NULL");

    }

還有問題?馬上發問,尋求解答。