13.基本アルゴリズム

13-3. リスト構造

◇サンプルプログラム

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

typedef struct item{
        int number;
        struct item *next;
        int index;
} *pStList;

void main()
{
        int index = 1, number;
        char command[10];
        pStList address = NULL;
        pStList add(int, pStList, int);
        void show(pStList);

        while(1){
                printf("Command ? = ");
                scanf("%s",command);
                if( strcmp(command,"add")==0){
                        printf("入力数値 = ");
                        scanf("%d",&number);
                        address = add(number, address, index);
                        index++;
                }
                else if(strcmp(command,"show")==0){
                        show(address);
                }
                else if(strcmp(command,"exit")==0){
                        return;
                }
                else{
                        printf("Unknown Command ...\n");
                }
        }
}

pStList add(int number,pStList address, int index)
{
        pStList NextList;
        NextList = malloc(sizeof *NextList);
        if ( NextList == NULL ) return NULL;
                NextList->number = number;
                NextList->next = address;
                NextList->index = index;

        return NextList;
}

void show(pStList address)
{
        while( address != NULL ){
                printf("No.%d [%d]\n",address->index, address->number);
                address = address->next;
        }
        printf("\n");
}

本当はデータを文字列にして、1番から順番に表示させたいのですが、そうするとコードが長くなるのでこの辺にとどめました。(時間切れ)