解题思路:该咋写就咋写

注意事项:该咋写就咋写

参考代码:

//累死我了,写这么多代码好累啊,写了1个小时,我还是太菜了

#include<iostream>

#include<cstring>

using namespace std;

typedef struct link{

    int data;

    struct link* next;

}link;

link* init(){

    link* p=new link;

    p->data=0;

    p->next=NULL;

    return p;

}

bool konglink(link* R){

    if(R->next==NULL)return 0;

    else return 1;

}

void qianchafa(link* R,int data){

    link* L=new link;

    L->data=data;

    if(konglink(R)==0){

        R->next=L;

        L->next=NULL;

    }

    else{

        L->next=R->next;

        R->next=L;

    }

    R->data++;

}

void insertlink(link* R,int position,int data){

    if(position-1>R->data){

        printf("insert fail\n");

    }

    else{

            link* L=new link;

            L->data=data;

            link* p=R;

            for(int i=1;i<position;i++){

                p=p->next;

            }

            if(position-1!=R->data){

                L->next=p->next;

            }

            else{

                L->next=NULL;

            }

            p->next=L;

        R->data++;

        printf("insert OK\n");

    }

}

void deletelink(link* R,int position){

    if(position>R->data){

        printf("delete fail\n");

    }

    else{

            link* p1=R;

            link* p2=R->next;

            for(int i=1;i<position;i++){

                p1=p1->next;

                p2=p2->next;

            }

            if(position==R->data){

                p1->next=NULL;

                delete p2;

            }

            else{

                p1->next=p2->next;

                delete p2;

            }

        R->data--;

        printf("delete OK\n");

    }

}

void getlink(link* R,int position){

    link *p=R;

    if(position>R->data){

        printf("get fail\n");

    }

    else{

        for(int i=0;i<position;i++){

            p=p->next;

        }

        printf("%d\n",p->data);

    }

}

void printlink(link* R){

    link *p=R;

    if(konglink(R)==0){

        printf("Link list is empty\n");

    }

    else{

        while(p->next!=NULL){

            p=p->next;

            printf("%d ",p->data);

        }

        printf("\n");

    }

}

int main()

{

    link* W=init();

    int n;

    int num;

    scanf("%d",&n);

    for(int i=0;i<n;i++){

        scanf("%d",&num);

        qianchafa(W,num);

    }

    //printlink(W);

    char caozuo[20];

    int k;

    scanf("%d",&k);

    for(int i=0;i<k;i++){

        scanf("%s",caozuo);

        if(strcmp(caozuo,"show")==0){

            printlink(W);

        }

        if(strcmp(caozuo,"insert")==0){

            int a,b;

            scanf("%d%d",&a,&b);

            insertlink(W,a,b);

        }

        if(strcmp(caozuo,"delete")==0){

            int a;

            scanf("%d",&a);

            deletelink(W,a);

        }

        if(strcmp(caozuo,"get")==0){

            int a;

            scanf("%d",&a);

            getlink(W,a);

        }

    }

    return 0;

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论