2012/11/24

資料結構 單向鍊結串列應用

單向鍊結串列應用





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

#define MAX 10

struct List{
    int Number;
    char Name[MAX];
    struct List * Next;
};

typedef struct List Node;
typedef Node *Link;

void Free_List(Link Head)
{
    Link Pointer;
    while(Head!=NULL){
        Pointer = Head;
        Head=Head->Next;
        free(Pointer);
    }
}

void Print_List(Link Head)
{
    Link Pointer=Head;
    while (Pointer!=NULL){
        printf("Input Data\n");
        printf("Data Numberber: %d\n",Pointer->Number);
        printf("Data Name: %s\n",Pointer->Name);
        Pointer=Pointer->Next;
    }
}

Link Create_Link(Link Head)
{
    int DataNum;
    char name[10];
    Link New;
    Link Pointer;
    int i;
    Head = (Link) malloc(sizeof(Node));

    if(Head==NULL){
        printf("記憶體配置失敗\n");
    }else{
        DataNum = 1;

        printf("請輸入名字:");
        scanf("%s",name);
        Head->Number=DataNum;

        for(i=0;i<=MAX;i++){
            Head->Name[i]=name[i];
        }
        Head->Next=NULL;
        Pointer=Head;

        while(1){
            DataNum++;
            New = (Link) malloc(sizeof(Node));
            printf("請輸入名字:");
            scanf("%s",name);

            if(name[0]=='0')
                break;
            New->Number=DataNum;

            for(int i=0;i<=MAX;i++){
                New->Name[i]=name[i];
            }

            New->Next=NULL;
            Pointer->Next=New;
            Pointer=New;
        }
    }
    return Head;
}

void main()
{
    Link Head;
    Head = Create_Link(Head);

    if(Head!=NULL){
        Print_List(Head);
        Free_List(Head);
    }

    system("pause");
}