スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

リスト(2)


// 20110226_2.cpp : メイン プロジェクト ファイルです。
/* 双方向リストを利用して、入力した文字列を逆順に出力する */

#include "stdafx.h"

using namespace System;

#include
#include
#include

typedef struct tagListNode{
struct tagListNode *prev;
struct tagListNode *next;
char data[20];
}ListNode;

enum ORDER{ASC /* 昇順 */, DESC /* 降順 */};

ListNode *firstNode, *lastNode, *newNode;

void listPrint(ORDER order){

ListNode *n;

if(order == ASC){/* 先頭要素に着目 */
n = firstNode;
printf("Head -");
while(n != NULL){
printf("%s -", n->data);
n = n->next;
}
printf("Tail\n");
} else if(order == DESC){/* 末尾要素に着目 */
n = lastNode;
printf("Tail -");
while(n != NULL){
printf("%s - ", n->data);
n = n->prev;
}
printf("Head\n");
}

}



void main(void){


/* 初期化 */
firstNode = lastNode = NULL;
char buf[20];
listPrint(ASC);

do{

puts("何か入力して下さい(0で終了)");
scanf("%s", buf);

if(strcmp("0",buf) != 0){


/* 新しいノードを作成 */
newNode = (ListNode *)malloc(sizeof(ListNode));
strcpy(newNode->data, buf);
newNode->prev = newNode->next = NULL;

/* ノードをリストに追加 */
if(lastNode != NULL){//リストに既にノードが存在する
lastNode->next = newNode;
newNode->prev = lastNode;
lastNode = newNode;
}else{//リストで最初のノードを追加する
firstNode = lastNode = newNode;
}
/* 途中経過を表示 */
listPrint(DESC);

}else{
break;
}
}while(1);

}
スポンサーサイト
プロフィール

tjnet777

Author:tjnet777
Solaris, VPNのサポート業務を1年

金融系SIerで業務アプリの開発、メンテを3年半

離職して大学院大学 1年生

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。