匿名用户
1级
2018-08-31 回答
//下面是我的代码,我新加了一个显示链表中的数据的功能,只要输入show就行,这样方便查看。
#include
#include
#include
typedef struct node
{
int num;
node *next;
}number;
int len;
void Rem(number *head)
{
number *p=head;
int num;
scanf("%d",&num);
while(p->next != NULL)
{
if(p->next->num==num)
break;
p=p->next;
}
if(p->next!=NULL)
{
p->next=p->next->next;
--len;
}
}
void Ins(number *head)
{
number *p=head;
int n1,n2;
scanf("%d %d",&n1,&n2);
while(p->next != NULL)
{
p=p->next;
if(p->num==n1)
break;
}
number *q=(number *)malloc(sizeof(number));
q->num=n2;
q->next=p->next;
p->next=q;
++len;
}
void Que(number *head)
{
number *p=head;
int n,i=0;
scanf("%d",&n);
if(len==0)
return;
n=1+(n%len);
while(p->next != NULL)
{
++i;
if(i==n)
{
printf("%d\n",p->next->num);
break;
}
p=p->next;
}
}
void Show(number *head)
{
number *p=head;
p=p->next;
if(p!=NULL)
printf("%d",p->num);
while(p->next!=NULL)
{
printf("\t%d",p->next->num);
p=p->next;
}
printf("\n");
}
void main()
{
number *head=(number *)malloc(sizeof(number));
head->next=NULL;
char order[10];
int n;
scanf("%d",&n);
while(n--)
{
scanf("%s",order);
if(strcmp(order,"rem")==0)
Rem(head);
else if(strcmp(order,"ins")==0)
Ins(head);
else if(strcmp(order,"que")==0)
Que(head);
else if(strcmp(order,"show")==0)
Show(head);
else
{
printf("命令格式错误,请重新输入!\n");
++n;
}
}
}