网址:http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=1326
这个题的主函数写的有点搓,没有整理,写的太多了
#include<stdio.h> #include<malloc.h> #include<string.h> typedef struct node { int data; node *next; }LinkList; void InitList(LinkList *&L) { L = (LinkList *)malloc(sizeof(LinkList)); L->next = NULL; } void CreateList(LinkList *&L,int a[],int n) { LinkList *r = L,*s; int i; for(i = 0; i < n; i++) { s = (LinkList *)malloc(sizeof(LinkList)); s->data = a[i]; s->next = r->next; r->next = s; } } int InsertList(LinkList *&L,int term,int data) { LinkList *p = L, *r; int j = 1; while(p != NULL && j < term) { p = p->next; j++; } if(p == NULL) return 0; r = (LinkList *)malloc(sizeof(LinkList)); r->data = data; r->next = p->next; p->next = r; return 1; } int GetList(LinkList *L,int term) { LinkList *p = L->next; int j = 1; while(p) { if(j == term) { return p->data; } p = p->next; j++; } if(j > term) return 0; } int DeleteList(LinkList *L,int term) { LinkList *p = L; int i = 1; while(p && i <term) { p = p->next; i++; } if(p == NULL) return 0; p->next = p->next->next; return 1; } void DispList(LinkList *L) { LinkList *p = L->next; while(p->next) { printf("%d ",p->data); p = p->next; } printf("%d\n",p->data); } int main() { LinkList *L; InitList(L); int n,a[100],i; scanf("%d",&n); for(i = 0; i < n; i++) scanf("%d",&a[i]); CreateList(L,a,n); scanf("%d",&n); char str[100]; for(i = 0; i < n; i++) { scanf("%s",str); if(!strcmp(str,"get")) { int n; scanf("%d",&n); int x = GetList(L,n); if(x) printf("%d\n",x); else printf("get fail\n"); } if(!strcmp(str,"insert")) { int aa,ee; scanf("%d%d",&aa,&ee); if(InsertList(L,aa,ee)) printf("insert OK\n"); else printf("insert fail\n"); } if(!strcmp(str,"delete")) { int aaa; scanf("%d",&aaa); if(DeleteList(L,aaa)) printf("delete OK\n"); else printf("delete fail\n"); } if(!strcmp(str,"show")) { if(L->next == NULL) printf("Link list is empty\n"); else DispList(L); } } return 0; }