/* list3.c データ構造(単方向リスト):整列入力、ダミーノードなし */
/*問題
ダミーノードを持たないリスト
入力されたデータの値によってリストは整列させてリンクする。
前回はダミーノードを予め設定してリスト処理を考えてきたが、
ダミーノードを持たない単方向リストを考える方がより一般的である。
void display(void)を部分を埋めて動作を可能にせよ。
*/
#include<stdio.h>
#include<stdlib.h>
struct list{
float element;
struct list *next;
};
struct list *head;
struct list *newlist(void)
{
return (struct list
*)malloc(sizeof(struct list
)); }
void insert(float val)
{
struct list *p,*q,*r;
p=head;
r=newlist(); r->element=val;
if(p==NULL) {r->next=p; head=r; }
else if(p->element>=val { r->next=p; head=r; }
else {
for(q=p; p!=NULL&&p->element<val;p=p->next) q=p;
r->next=p; q->next=r;
}
}
void delete(float val)
{
struct list *p,*q,*r;
p=head;
if(p==NULL) return;
else if(p
->element
==val
) { head
=p
->next
; free(p
); } else {
for(q=p;p!=NULL&&p->element<val; p=p->next) q=p;
if(p
!=NULL
&&p
->element
==val
) { q
->next
=p
->next
; free(p
); } }
}
void initialize(void)
{
head=NULL;
}
void display(void){ここを埋めよ}
void main(void){
struct list *q,*r;
int i,c=0;
for(r=head;r!=NULL;r=r->next){
c++;
}
q=head;
for(i=0;i<c-2;i++){
q=q->next;
printf("%4x:%f\n",q
,q
->element
); }
}
LyogbGlzdDMuYyDjg4fjg7zjgr/mp4vpgKAo5Y2Y5pa55ZCR44Oq44K544OIKTrmlbTliJflhaXlipvjgIHjg4Djg5/jg7zjg47jg7zjg4njgarjgZcgKi8KLyrllY/poYwK44OA44Of44O844OO44O844OJ44KS5oyB44Gf44Gq44GE44Oq44K544OICuWFpeWKm+OBleOCjOOBn+ODh+ODvOOCv+OBruWApOOBq+OCiOOBo+OBpuODquOCueODiOOBr+aVtOWIl+OBleOBm+OBpuODquODs+OCr+OBmeOCi+OAggrliY3lm57jga/jg4Djg5/jg7zjg47jg7zjg4njgpLkuojjgoHoqK3lrprjgZfjgabjg6rjgrnjg4jlh6bnkIbjgpLogIPjgYjjgabjgY3jgZ/jgYzjgIEK44OA44Of44O844OO44O844OJ44KS5oyB44Gf44Gq44GE5Y2Y5pa55ZCR44Oq44K544OI44KS6ICD44GI44KL5pa544GM44KI44KK5LiA6Iis55qE44Gn44GC44KL44CCCgp2b2lkIGRpc3BsYXkodm9pZCnjgpLpg6jliIbjgpLln4vjgoHjgabli5XkvZzjgpLlj6/og73jgavjgZvjgojjgIIKKi8KI2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CnN0cnVjdCBsaXN0ewogICAgZmxvYXQgZWxlbWVudDsKCXN0cnVjdCBsaXN0ICpuZXh0Owp9OwoKc3RydWN0IGxpc3QgKmhlYWQ7CnN0cnVjdCBsaXN0ICpuZXdsaXN0KHZvaWQpCnsKCXJldHVybiAoc3RydWN0IGxpc3QgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBsaXN0KSk7Cn0KCnZvaWQgaW5zZXJ0KGZsb2F0IHZhbCkKewoJc3RydWN0IGxpc3QgKnAsKnEsKnI7CglwPWhlYWQ7CglyPW5ld2xpc3QoKTsgci0+ZWxlbWVudD12YWw7CglpZihwPT1OVUxMKSB7ci0+bmV4dD1wOyBoZWFkPXI7IH0KCWVsc2UgaWYocC0+ZWxlbWVudD49dmFsIHsgci0+bmV4dD1wOyBoZWFkPXI7IH0KCWVsc2UgewoJCWZvcihxPXA7IHAhPU5VTEwmJnAtPmVsZW1lbnQ8dmFsO3A9cC0+bmV4dCkgcT1wOwoJCXItPm5leHQ9cDsgcS0+bmV4dD1yOwoJfQp9Cgp2b2lkIGRlbGV0ZShmbG9hdCB2YWwpCnsKCXN0cnVjdCBsaXN0ICpwLCpxLCpyOwoJcD1oZWFkOwoJaWYocD09TlVMTCkgcmV0dXJuOwoJZWxzZSBpZihwLT5lbGVtZW50PT12YWwpIHsgaGVhZD1wLT5uZXh0OyBmcmVlKHApOyB9CgllbHNlIHsKCQlmb3IocT1wO3AhPU5VTEwmJnAtPmVsZW1lbnQ8dmFsOyBwPXAtPm5leHQpIHE9cDsKCQlpZihwIT1OVUxMJiZwLT5lbGVtZW50PT12YWwpIHsgcS0+bmV4dD1wLT5uZXh0OyBmcmVlKHApOyB9Cgl9Cn0KCnZvaWQgaW5pdGlhbGl6ZSh2b2lkKQp7CgloZWFkPU5VTEw7Cn0KCnZvaWQgZGlzcGxheSh2b2lkKXvjgZPjgZPjgpLln4vjgoHjgoh9Cgp2b2lkIG1haW4odm9pZCl7CglzdHJ1Y3QgbGlzdCAqcSwqcjsKCWludCBpLGM9MDsKCQlmb3Iocj1oZWFkO3IhPU5VTEw7cj1yLT5uZXh0KXsKCQkJYysrOwoJCX0KCQlxPWhlYWQ7CgkJZm9yKGk9MDtpPGMtMjtpKyspewoJCQlxPXEtPm5leHQ7CgkJCXByaW50ZigiJTR4OiVmXG4iLHEscS0+ZWxlbWVudCk7CgkJfQp9