解题思路:

注意事项:

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论