#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct List { char s[35]; struct List *next; }List; void insert(List *l,int num,char name[]) { int temp = 1,i = 0; List *p,*q; q = (List *)malloc(sizeof(List)); for(i = 0;i < strlen(name);i ++) { q->s[i] = name[i]; } q->s[i] = 0; //printf("q = %s\n",q->s); q -> next = NULL; p = l; while(p->next != NULL && temp != num) { p = p ->next; temp ++; } q->next = p->next; p->next = q; } void dele(List *l,char name[]) { List *p,*q; p = l; while(p->next != NULL) { if(strcmp(p->next->s,name) == 0) break; p = p->next; } q = p->next; p->next = p->next->next; free(q); } void show(List *l) { List *p; p = l; while(p->next != NULL) { if(p->next->next != NULL) printf("%s ",p->next->s); else printf("%s\n",p->next->s); p = p->next; } } void search(List *l,char name[]) { int n = 1; List *p; p = l; while(p->next != NULL) { if(strcmp(p->next->s,name) == 0) { printf("%d\n",n); break; } p = p->next; n ++; } } int main() { char order[10],name[35]; int num; List *l = (List*)malloc(sizeof(List)); l->next = NULL; while(scanf("%s",order) != EOF) { //printf("order = %s\n",order); if(strcmp(order,"insert") == 0) { scanf("%d",&num); //printf("num = %d\n",num); getchar(); scanf("%s",name); //printf("name = %s\n",name); insert(l,num,name); //printf("%s\n",l->next->s); } else if(strcmp(order,"delete") == 0) { scanf("%s",name); dele(l,name); } else if(strcmp(order,"search") == 0) { scanf("%s",name); search(l,name); } else if(strcmp(order,"show") == 0) { show(l); } } return 0; } /************************************************************** Problem: 2137 User: admin Language: C Result: Accepted Time:19 ms Memory:1148 kb ****************************************************************/