PTA 6-11 操作指针删除三个已串接结点中的第二个结点

系统已经实现用malloc生成3个结点并串接成功,现在需要实现换一个函数destroy要删除第二个节点后,第一个结点和第三个结点串接,返回值为第一个结点地址,注意删除的结点要free释放空间。

函数接口定义:

复制代码
ptr destroy(ptr p1);

返回值为第一个结点的地址。

结构定义:

复制代码
typedef struct node//结构体定义 
{ 
int data;//存储数据 
struct node *next;//指向下一个结点的指针
 }
snode,*ptr;//定义别名

裁判测试程序样例:

复制代码
#include <stdio.h> 
#include<stdlib.h> 
typedef struct node//结构体定义 
{ 
int data; 
struct node *next; 
}snode,*ptr; 
ptr destroy (ptr p); 

void traversal(ptr p); 
int main() 
{ 
int x1,x2,x3; 
ptr p1,p; 
scanf("%d%d%d", &x1,&x2,&x3); 
p1=createthree(x1,x2,x3); 
p=destroy (p1); 
traversal(p1); 
return 0; } 

void traversal(ptr p) 
{ 
while(p!=NULL) { 
printf("%d ",p->data); 
p=p->next; } } 
/* 请在这里填写答案 */

输入样例:

复制代码
5 1 6

输出样例:

复制代码
5 6 

代码实现:

复制代码
ptr destroy(ptr p1)
{
    ptr wyf;
    wyf=(ptr)malloc(sizeof(snode));
    wyf=p1->next;
    p1->next=p1->next->next;
    free(wyf);
    return p1;}
相关推荐
No0d1es2 小时前
电子学会青少年软件编程(C/C++)5级等级考试真题试卷(2024年6月)
c语言·c++·算法·青少年编程·电子学会·五级
大阳1234 小时前
线程(基本概念和相关命令)
开发语言·数据结构·经验分享·算法·线程·学习经验
weixin_307779135 小时前
VS Code配置MinGW64编译GNU 科学库 (GSL)
开发语言·c++·vscode·算法
学行库小秘5 小时前
ANN神经网络回归预测模型
人工智能·python·深度学习·神经网络·算法·机器学习·回归
没落之殇6 小时前
基于C语言实现的HRV分析方法 —— 与Kubios和MATLAB对比
算法
FPGA6 小时前
探讨4B/5B编码、8B/10B编码区别以及FPGA实现
数据结构
秋难降6 小时前
线段树的深度解析(最长递增子序列类解题步骤)
数据结构·python·算法
Peter_Deng.6 小时前
Linux 下基于 TCP 的 C 语言客户端/服务器通信详解(三个示例逐步进阶)
服务器·c语言·网络
楚韵天工6 小时前
基于GIS的无人机模拟飞行控制系统设计与实现
深度学习·算法·深度优先·无人机·广度优先·迭代加深·图搜索算法
你也向往长安城吗7 小时前
推荐一个三维导航库:three-pathfinding-3d
javascript·算法