#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
struct node {
char key;
int data;
struct node *next;
};
struct node *head = NULL;
struct node *current = NULL;
//insert link at the first location
void insertFirst(int key, int data) {
//create a link
struct node
*link
= (struct node
*) malloc(sizeof(struct node
));
link->key = key;
link->data = data;
//point it to old first node
link->next = head;
//point first to new first node
head = link;
}
//display the list
void printList() {
struct node *ptr = head;
//start from the beginning
while(ptr != NULL) {
printf("(%c,%d) ",ptr
->key
,ptr
->data
); ptr = ptr->next;
}
}
int main() {
insertFirst('A',300);
insertFirst('B',0);
insertFirst('C',100);
insertFirst('D',200);
struct node *tmp = head;
int avg=0;
while(tmp != NULL) {
avg=avg+tmp->data;
tmp = tmp->next;
}
avg=avg/4;
//print list
printList();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkYm9vbC5oPgoKc3RydWN0IG5vZGUgewogIGNoYXIga2V5OwogICBpbnQgZGF0YTsKICAgc3RydWN0IG5vZGUgKm5leHQ7Cn07CnN0cnVjdCBub2RlICpoZWFkID0gTlVMTDsKc3RydWN0IG5vZGUgKmN1cnJlbnQgPSBOVUxMOwoKLy9pbnNlcnQgbGluayBhdCB0aGUgZmlyc3QgbG9jYXRpb24Kdm9pZCBpbnNlcnRGaXJzdChpbnQga2V5LCBpbnQgZGF0YSkgewogICAvL2NyZWF0ZSBhIGxpbmsKICAgc3RydWN0IG5vZGUgKmxpbmsgPSAoc3RydWN0IG5vZGUqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CgkKICAgbGluay0+a2V5ID0ga2V5OwogICBsaW5rLT5kYXRhID0gZGF0YTsKCQogICAvL3BvaW50IGl0IHRvIG9sZCBmaXJzdCBub2RlCiAgIGxpbmstPm5leHQgPSBoZWFkOwoJCiAgIC8vcG9pbnQgZmlyc3QgdG8gbmV3IGZpcnN0IG5vZGUKICAgaGVhZCA9IGxpbms7Cn0KCi8vZGlzcGxheSB0aGUgbGlzdAp2b2lkIHByaW50TGlzdCgpIHsKICAgc3RydWN0IG5vZGUgKnB0ciA9IGhlYWQ7CiAgIHByaW50ZigiXG5bICIpOwoJCiAgIC8vc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nCiAgIHdoaWxlKHB0ciAhPSBOVUxMKSB7CiAgICAgIHByaW50ZigiKCVjLCVkKSAiLHB0ci0+a2V5LHB0ci0+ZGF0YSk7CiAgICAgIHB0ciA9IHB0ci0+bmV4dDsKICAgfQoJCiAgIHByaW50ZigiIF0iKTsKfQoKaW50IG1haW4oKSB7CiAgIGluc2VydEZpcnN0KCdBJywzMDApOwogICBpbnNlcnRGaXJzdCgnQicsMCk7CiAgIGluc2VydEZpcnN0KCdDJywxMDApOwogICBpbnNlcnRGaXJzdCgnRCcsMjAwKTsKCnN0cnVjdCBub2RlICp0bXAgPSBoZWFkOwppbnQgYXZnPTA7CiB3aGlsZSh0bXAgIT0gTlVMTCkgewogICAgICBhdmc9YXZnK3RtcC0+ZGF0YTsKICAgICAgdG1wID0gdG1wLT5uZXh0OwogICB9CmF2Zz1hdmcvNDsKcHJpbnRmKCJhdmc9JWRcbiIsYXZnKTsKICAgcHJpbnRmKCJPcmlnaW5hbCBMaXN0OiAiKTsgCiAgIC8vcHJpbnQgbGlzdAogICBwcmludExpc3QoKTsKCgoJcmV0dXJuIDA7Cn0K