/* dlist.c データ構造(双方向リスト):整列入力(ダミーノード2つ) */
/*問題
・双方向リスト(重連結リスト)
これまでのリストでは、自ノードの次のノードのデータには簡単にリストをたどることができるが、
自ノードの前のノードをたどることは容易ではない。そこで、次ノードへの
ポインタの他に前ノードへのポインタをもノード内に設定することによって
これを用意にするリスト構造がある。ポインタが2つの方向性を持つことから、双方向リストと呼ばれる。
以下にダミーノードを2つ持つ双方向リストのプログラムを紹介する。
void display(void)の部分を埋めて動作を可能にせよ。
*/
#include<stdio.h>
#include<stdlib.h>
#define Nmax -10000.0
#define Pmax +10000.0
struct dlist{
float element;
struct dlist *pred;
struct dlist *next;
};
struct dlist *head;
sturct dlist *tail;
struct dlist *newdlist(void)
{
return(struct dlist
*)malloc(sizeof(struct dlist
)); }
void insert(float val)
{
struct dlist *p,*r;
for(p=head->next;p->element<val;p=p->next);
r=newldlist();
r->element=val; r->next=p;
(p->pred)->next=r; r->pred=p->pred; p->pred=r;
}
void delete(float val)
{
struct dlist *p;
for(p=head->next;p->element<val;p=p->next);
if(p->element==val){
(p->pred)->next=p->next;
(p->next)->pred=p->pred;
}
}
void initialize(void)
{
head=newlist(); /*dummy node 1 */
tail=newlist(); /*dummy node 2 */
head->element=Nmax; head->pred=NULL; head->next=tail;
tail->element=Pmax; tail->pred=head; tail->next=NULL;
}
void display(void){ここを埋めよ}
void main(void){
int mode;
float val;
initialize();
mode=1;
while(mode){
printf("list process ?insert(1) or delete(0) = "); if(mode==1){
}else if(mode==0){
}
display();
printf("contiunue(1) or quit(0) = "); scanf("%d",&mode
); }
}
LyogZGxpc3QuYyDjg4fjg7zjgr/mp4vpgKAo5Y+M5pa55ZCR44Oq44K544OIKTrmlbTliJflhaXlipso44OA44Of44O844OO44O844OJMuOBpCkgKi8KLyrllY/poYwK44O75Y+M5pa55ZCR44Oq44K544OI77yI6YeN6YCj57WQ44Oq44K544OI77yJCuOBk+OCjOOBvuOBp+OBruODquOCueODiOOBp+OBr+OAgeiHquODjuODvOODieOBruasoeOBruODjuODvOODieOBruODh+ODvOOCv+OBq+OBr+ewoeWNmOOBq+ODquOCueODiOOCkuOBn+OBqeOCi+OBk+OBqOOBjOOBp+OBjeOCi+OBjOOAgQroh6rjg47jg7zjg4njga7liY3jga7jg47jg7zjg4njgpLjgZ/jganjgovjgZPjgajjga/lrrnmmJPjgafjga/jgarjgYTjgILjgZ3jgZPjgafjgIHmrKHjg47jg7zjg4njgbjjga4K44Od44Kk44Oz44K/44Gu5LuW44Gr5YmN44OO44O844OJ44G444Gu44Od44Kk44Oz44K/44KS44KC44OO44O844OJ5YaF44Gr6Kit5a6a44GZ44KL44GT44Go44Gr44KI44Gj44GmCuOBk+OCjOOCkueUqOaEj+OBq+OBmeOCi+ODquOCueODiOani+mAoOOBjOOBguOCi+OAguODneOCpOODs+OCv+OBjDLjgaTjga7mlrnlkJHmgKfjgpLmjIHjgaTjgZPjgajjgYvjgonjgIHlj4zmlrnlkJHjg6rjgrnjg4jjgajlkbzjgbDjgozjgovjgIIK5Lul5LiL44Gr44OA44Of44O844OO44O844OJ44KSMuOBpOaMgeOBpOWPjOaWueWQkeODquOCueODiOOBruODl+ODreOCsOODqeODoOOCkue0ueS7i+OBmeOCi+OAggoKdm9pZCBkaXNwbGF5KHZvaWQp44Gu6YOo5YiG44KS5Z+L44KB44Gm5YuV5L2c44KS5Y+v6IO944Gr44Gb44KI44CCCiovCiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgojZGVmaW5lIE5tYXggLTEwMDAwLjAKI2RlZmluZSBQbWF4ICsxMDAwMC4wCgpzdHJ1Y3QgZGxpc3R7CiAgICBmbG9hdCBlbGVtZW50OwoJc3RydWN0IGRsaXN0ICpwcmVkOwoJc3RydWN0IGRsaXN0ICpuZXh0Owp9OwoKc3RydWN0IGRsaXN0ICpoZWFkOwpzdHVyY3QgZGxpc3QgKnRhaWw7CnN0cnVjdCBkbGlzdCAqbmV3ZGxpc3Qodm9pZCkKewoJcmV0dXJuKHN0cnVjdCBkbGlzdCAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IGRsaXN0KSk7Cn0KCnZvaWQgaW5zZXJ0KGZsb2F0IHZhbCkKewoJc3RydWN0IGRsaXN0ICpwLCpyOwoJZm9yKHA9aGVhZC0+bmV4dDtwLT5lbGVtZW50PHZhbDtwPXAtPm5leHQpOwoJcj1uZXdsZGxpc3QoKTsKCXItPmVsZW1lbnQ9dmFsOyByLT5uZXh0PXA7CgkocC0+cHJlZCktPm5leHQ9cjsgci0+cHJlZD1wLT5wcmVkOyBwLT5wcmVkPXI7Cn0KCnZvaWQgZGVsZXRlKGZsb2F0IHZhbCkKewoJc3RydWN0IGRsaXN0ICpwOwoJZm9yKHA9aGVhZC0+bmV4dDtwLT5lbGVtZW50PHZhbDtwPXAtPm5leHQpOwoJaWYocC0+ZWxlbWVudD09dmFsKXsKCQkocC0+cHJlZCktPm5leHQ9cC0+bmV4dDsKCQkocC0+bmV4dCktPnByZWQ9cC0+cHJlZDsKCQlmcmVlKHApOwoJfQp9Cgp2b2lkIGluaXRpYWxpemUodm9pZCkKewoJaGVhZD1uZXdsaXN0KCk7CS8qZHVtbXkgbm9kZSAxICovCgl0YWlsPW5ld2xpc3QoKTsgLypkdW1teSBub2RlIDIgKi8KCWhlYWQtPmVsZW1lbnQ9Tm1heDsgaGVhZC0+cHJlZD1OVUxMOyBoZWFkLT5uZXh0PXRhaWw7Cgl0YWlsLT5lbGVtZW50PVBtYXg7IHRhaWwtPnByZWQ9aGVhZDsgdGFpbC0+bmV4dD1OVUxMOwp9Cgp2b2lkIGRpc3BsYXkodm9pZCl744GT44GT44KS5Z+L44KB44KIfQoKdm9pZCBtYWluKHZvaWQpewoJaW50IG1vZGU7CglmbG9hdCB2YWw7Cglpbml0aWFsaXplKCk7Cgltb2RlPTE7Cgl3aGlsZShtb2RlKXsKCQlwcmludGYoImxpc3QgcHJvY2VzcyA/aW5zZXJ0KDEpIG9yIGRlbGV0ZSgwKSA9ICIpOwoJCXNjYW5mKCIlZCIsJm1vZGUpOwoJCWlmKG1vZGU9PTEpewoJCQlwcmludGYoIj9kYXRhID0iKTsgc2NhbmYoIiVmIiwmdmFsKTsgaW5zZXJ0KHZhbCk7CgkJfWVsc2UgaWYobW9kZT09MCl7CgkJCXByaW50ZigiP2RhdGEgPSIpOyBzY2FuZigiJWYiLCZ2YWwpOyBkZWxldGUodmFsKTsKCQl9CgkJZGlzcGxheSgpOwoJCXByaW50ZigiY29udGl1bnVlKDEpIG9yIHF1aXQoMCkgPSAiKTsgc2NhbmYoIiVkIiwmbW9kZSk7Cgl9Cn0=