执言


私信TA

用户名:dotcpp0711775

访问量:877

签 名:

每天都很困

等  级
排  名 2103
经  验 2451
参赛次数 0
文章发表 30
年  龄 18
在职情况 学生
学  校 吉林大学
专  业 计科

  自我简介:

不想考试 不想学习 不想内卷 不想敲代码

TA的其他文章

解题思路:

注意事项:

参考代码:

#include<stdio.h>

#include<stdlib.h>

typedef struct Node{

    int x;

    struct Node *next;

}node;


void show(node*head)

{

    if(head==NULL)

    {

        printf("Link list is empty");

    }else{

    for(node*p=head;p;p=p->next)

    {

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

        if(p->next)

        {

            printf(" ");

        }

     } 

    }

}


node *mydelete(node*head,int k)

{

    node*p=head;

    int m=k;

    while(--m>1)

    {

       p=p->next;

    }

    if(p&&k!=1)

    {

    node*temp=p->next;

    p->next=p->next->next;

    free(temp);

    printf("delete OK");

    return head;

    }else if(p&&k==1)

{

node*temp=p;

p=p->next;

free(temp);

printf("delete OK");

return p;

}else{

        printf("delete fail");

        return head;

    }

}


void get(node* head,int k)

{

    node*p=head;

    while(--k>0)

    {

        p=p->next;

    }

    if(p)

    {

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

    }else{

        printf("get fail");

    }

}


node *insert(node*head,int a,int e)

{

    node*p=head;

    int m=a;

    while(--m>1)

    {

        p=p->next;

    }

    if(p&&a!=1)

    {

        node*q=(node*)malloc(sizeof(node));

        q->x=e;

        q->next=p->next;

        p->next=q;

        printf("insert OK");

        return head;

    }else if(a==1)

{

p=(node*)malloc(sizeof(node));

p->x=e;

p->next=head;

printf("insert OK");

return p;

}else{

        printf("insert fail");

        return head;

    }

}

int main()

{

    int n;

    scanf("%d",&n);

    int a[100];

    node*head=NULL;

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

    {

        scanf("%d",&a[i]);

    }

    for(int i=n-1;i>=0;i--)

    {

        node*p=(node*)malloc(sizeof(node));

        p->x=a[i];

        p->next=NULL;

        if(head)

        {

            node*last=head;

            while(last->next)

            {

                last=last->next;

            }

            last->next=p;

        }else{

            head=p;

        }

    }

    //build finished;

    int word;

    scanf("%d",&word);

    for(int i=0;i<word;i++)

    {

        char s[50];

        scanf("%s",s);

        switch(s[0]){

            case 's':

            {

                show(head);

                printf("\n");

                break;

            }

            case 'd':

            {

                int k;

                scanf("%d",&k);

                head=mydelete(head,k);

                printf("\n");

                break;

            }

            case 'g':

            {

                int k;

                scanf("%d",&k);

                get(head,k);

                printf("\n");

                break;

            }

            case 'i':

            {

                int r,j;

                scanf("%d %d",&r,&j);

                head=insert(head,r,j);

                printf("\n");

                break;

            }

        }

    }

    while(head)

    {

    node*temp=head;

    head=head->next;

    free(temp);

}

    return 0;

}


 

0.0分

1 人评分

  评论区

  • «
  • »