cotonier


私信TA

用户名:18955969340

访问量:572

签 名:

等  级
排  名 6188
经  验 1393
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 天津大学
专  业 测控

  自我简介:

解题思路:

注意事项:

参考代码:

#include<stdio.h>
#include<string.h>
typedef struct _Node
{
    int data;
    struct _student *next;
}Node,*LinkList;


LinkList list_Init(int n)
{
    LinkList L;
    L=(Node *)malloc(sizeof(Node));
    if(L==NULL)
    {
        printf("申请空间失败");
        exit(0);
    }
    L->next=NULL;
   //前插法
    for(int i=0;i<n;i++)
    {
        Node*p;
        p=(Node *)malloc(sizeof(Node));
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
    return L;
}

void get(LinkList L,int a)
{
    Node* p=L;
    for(int i=1;i<=a;i++)
    {
        if(p!=NULL)
        {
            p=p->next;
        }
        else
        {
            printf("get fail\n");
            exit(0);
        }
    }
    printf("%d\n",p->data);
}

void delete(LinkList L,int a)
{
    Node* pre=L;
    for(int i=1;i<a;i++)
    {
        if(pre!=NULL&&pre->next!=NULL)
        {
            pre=pre->next;
        }
        else
        {
            printf("delete fail\n");
            return;
        }
    }
    Node* cur=pre->next;
    pre->next=cur->next;
    free(cur);
    printf("delete OK\n");
}

void insert_LinkList(LinkList L,int data,int addr)
{
    Node* p=L;
    for(int i=1;i<addr;i++)
    {
        if(p!=NULL&&p->next!=NULL)
        p=p->next;
        else
        {
            printf("insert fail\n");
            return;
        }
        
    }
    Node *n;
    n=(Node *)malloc(sizeof(Node));
    n->data=data;
    n->next=p->next;
    p->next=n;
    printf("insert OK\n");
    
}

void show_LinkList(LinkList L)
{
    if(L->next==NULL)
    {
        printf("Link list is empty\n");
    }
    else
    {
    Node *r=L->next;
    while(r)
    {
        printf("%d ",r->data);
        r=r->next;
    }
    printf("\n");
    }
}


int main()
{
    int n1;
    scanf("%d",&n1);
    LinkList L=list_Init(n1);
    int n2;
   
    scanf("%d",&n2);
    char order[10];
    
    
    for(int i=0;i<n2;i++)
    {
        scanf("%s",order);
        if(!strcmp(order,"get"))//获取 "get"
        {
            int a;
            scanf("%d",&a);
            get(L,a);
        }
        else if(!strcmp(order,"insert"))//插入 "insert"
        {
            int addr,data;
            scanf("%d%d",&addr,&data);
            insert_LinkList(L,data,addr);
        }
        else if(!strcmp(order,"delete"))//删除 "delete"
        {
            int a;
            scanf("%d",&a);
            delete(L,a);
        }
        else if(!strcmp(order,"show"))//显示 "show"
        {
            show_LinkList(L);
        }
    }
    
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区