2021-01-31

1520: 交换节点(线性表)
描述
(线性表)编写一个算法来交换单链表中指针P所指结点与其后继结点,HEAD是该链表的头指针,P指向该链表中某一结点。
格式
输入格式
输入链表长度:6

输入链表:1 2 3 4 5 6

输入p指向的节点:5

输出格式
1 2 3 4 6 5

样例
样例输入 Copy
5
7 6 9 8 2
3
样例输出 Copy
7 6 8 9 2

#include<stdio.h>
#include<stdlib.h>

struct arr
{
int value;
struct arr* next;
};

int main()
{
int num;
scanf("%d",&num);
struct arr *head,p,z;
head=NULL;
for(int a=0; a<num; a++)
{
if(head==NULL)
{
p=(struct arr
)malloc(sizeof(struct arr));
scanf("%d",&p->value);
head=p;
}
else
{
z=(struct arr
)malloc(sizeof(struct arr));
scanf("%d",&z->value);
p->next=z;
p=z;
}
}

int num_output;
num_output=num;
scanf("%d",&num);
p=z=head;
for(int a=0;a<num-1;a++)
{
    p=p->next;
}

int value;
z=p->next;
value=p->value;
p->value=z->value;
z->value=value;

for(int a=0;a<num_output;a++)
{
    printf("%d ",head->value);
    head=head->next;
}
return 0;

}
注意:

定义struct arr
{

}*head,*p,*z;
后不可以直接用;
要malloc后的才可以(如scanf操作)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值