时颜夏月


私信TA

用户名:dotcpp0713744

访问量:361

签 名:

等  级
排  名 2772
经  验 2101
参赛次数 0
文章发表 10
年  龄 0
在职情况 学生
学  校 河南理工大学
专  业

  自我简介:

解题思路:

注意事项:个数算一次就好,每次的”delete“或”insert“,相应进行++,--

参考代码:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct lian{

int a;

struct lian*next;

}li,*lp;

void myshow(lp p){

if(p->next==NULL)

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

else{p=p->next;

while(p!=NULL){

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

p=p->next;}

printf("\n");

}}

void myget(lp p,int q,int i){

if(q>i-1||q<=0)

printf("get fail\n");

else{i=0;

 while(i++!=q)

p=p->next;

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

void mydelete(lp p,int q,int i){

if(q>i-1||q<=0)

printf("delete fail\n");

else{i=0;

while(i++!=(q-1))

p=p->next;

lp op=p->next;

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

free(op);

printf("delete OK\n");

}}

void myinsert(lp p,int q,int qq,int i){

if(q>i||q<=0)

printf("insert fail\n");

else{i=0;

while(i++!=(q-1))

p=p->next;

lp mm=p->next;

p->next=(li*)malloc(sizeof(li));

p=p->next;

p->a=qq;

p->next=mm;

printf("insert OK\n");

} }

int main(){

int n,c,q,qq,i;

char cc[20];

scanf("%d",&n);

int *shu=(int*)malloc(n*sizeof(int));

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

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

li title={0,NULL};

lp p=&title;

while(n--!=0){

p->next=(li*)malloc(sizeof(li));

p=p->next;

p->a=shu[--i]; }

p->next=NULL;

free(shu);

lp pp=&title;

i=0;

while(pp!=NULL){

i++;

pp=pp->next; }

scanf("%d",&c);

while(c--!=0){

p=&title;

scanf("%s",cc);

if(strcmp(cc,"show")==0)

myshow(p);

else if(strcmp(cc,"get")==0)

{scanf("%d",&q);

myget(p,q,i);

}

else if(strcmp(cc,"delete")==0){

scanf("%d",&q);

mydelete(p,q,i);

i--; }

else if(strcmp(cc,"insert")==0){

scanf("%d %d",&q,&qq);

myinsert(p,q,qq,i);

i++;}

}

return 0;

}


 

0.0分

0 人评分

  评论区