1069745273


私信TA

用户名:1069745273

访问量:6610

签 名:

Just do IT.

等  级
排  名 252
经  验 5936
参赛次数 3
文章发表 166
年  龄 0
在职情况 待业
学  校
专  业 计算机科学与技术

  自我简介:

错了两次才过,这题有一个数据很大的样例,输入输出不能用 cin 和 cout,字符串用 char 数组不要用 string,不然会时间超限。

#include<bits/stdc++.h>
using namespace std;

struct node{
    int data;
    struct node *Next;
};

typedef struct node Node;

void headinsert(int data,Node *L){
    Node *node = (Node*)malloc(sizeof(node));
    node->data = data;
    node->Next = L->Next;
    L->Next = node;
    L->data++;
}

void middleinsert(int data,int n,Node *L){
    Node *node = (Node*)malloc(sizeof(node));
    Node *temp = L;
    if(n>L->data){
        if(L->data==0 && n==1){
            headinsert(data,L);
            printf("insert OK\n");
        }
        else{
            printf("insert fail\n");
        }
    }
    else{
        for(int i=1;i<n;i++){
            temp = temp->Next;
        }
        node->data = data;
        node->Next = temp->Next;
        temp->Next = node;
        L->data++;
        printf("insert OK\n");
    }
}

void getnode(int n,Node *L){
    Node *temp = L->Next;
    if(n>L->data){
        printf("get fail\n");
    }
    else{
        for(int i=1;i<n;i++){
            temp = temp->Next;
        }
        printf("%d\n",temp->data);
    }
   
}

void printlist(Node *L){
    Node *temp = L->Next;
    if(temp==NULL){
        printf("Link list is empty\n");
        return;
    }
    while(temp!=NULL){
        printf("%d ",temp->data);
        temp = temp->Next;
    }
    printf("\n");
}

void deletenode(int n,Node *L){
    Node *temp = L;
    Node *t;
    if(n>L->data){
        printf("delete fail\n");
    }
    else{
        for(int i=0;i<n-1;i++){
            temp = temp->Next;
        }
        t = temp->Next;
        temp->Next = t->Next;
        t->Next = NULL;
        free(t);
        L->data--;
        printf("delete OK\n");
    }
}

int main() {
    Node *headnode = (Node*)malloc(sizeof(headnode));
    Node *head = headnode;
    head->data = 0;
    head->Next = NULL;

    int n,data;
    char s[7];
    int position;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&data);
        headinsert(data,head);
    }
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%s",&s);
        if(!strcmp(s,"delete")){
            scanf("%d",&position);
            deletenode(position,head);
        }
        else if(!strcmp(s,"show")){
            printlist(head);
        }
        else if(!strcmp(s,"insert")){
            scanf("%d %d",&position,&data);
            middleinsert(data,position,head);
        }
        else if(!strcmp(s,"get")){
            scanf("%d",&position);
            getnode(position,head);
        }
    }
    return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »