网址: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;
}