#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct List{ int elem; struct List *next; }List; void get(List *l,int n) { List *p; int flag = 0; p = l; while(p->next != NULL) { n --; if(n == 0) { flag = 1; break; } p = p->next; } if(flag == 1) { printf("%d\n",p->next->elem); } else { printf("get fail\n"); } } void insert(List *l,int n,int e) { int flag = 0; List *p,*q; q = (List *)malloc(sizeof(List)); q->elem = e; q -> next = NULL; p = l; do { n --; if(n == 0) { flag = 1; break; } p = p ->next; }while(p != NULL); if(flag) { q->next = p->next; p->next = q; printf("insert OK\n"); } else { printf("insert fail\n"); } } void dele(List *l,int n) { List *p,*q; int flag = 0; p = l; while(p->next != NULL) { n --; if(n == 0) { flag = 1; break; } p = p->next; } if(flag == 1) { q = p->next; p->next = p->next->next; free(q); printf("delete OK\n"); } else { printf("delete fail\n"); } } void show(List *l) { List *p; p = l; if(l->next == NULL) { printf("Link list is empty\n"); return; } while(p->next != NULL) { if(p->next->next != NULL) printf("%d ",p->next->elem); else printf("%d\n",p->next->elem); p = p->next; } } int main() { int n,m; int x,y; int i; List *l,*p; char order[10]; l = (List *)malloc(sizeof(List)); l->next = NULL; scanf("%d",&n); for(i = 0;i < n;i ++) { p = (List*)malloc(sizeof(List)); p->next = NULL; scanf("%d",&p->elem); p->next = l->next; l->next = p; } scanf("%d",&m); getchar(); while(m != 0) { m --; scanf("%s",order); //printf("%s\n",order); if(strcmp(order,"get") == 0) { scanf("%d",&x); getchar(); get(l,x); } else if(strcmp(order,"insert") == 0) { scanf("%d%d",&x,&y); getchar(); insert(l,x,y); } else if(strcmp(order,"delete") == 0) { scanf("%d",&x); getchar(); dele(l,x); } else if(strcmp(order,"show") == 0) { show(l); } } return 0; } /************************************************************** Problem: 2138 User: admin Language: C Result: Accepted Time:42 ms Memory:1676 kb ****************************************************************/