PTA 实现链式表的操作集

链式表操作集 6-5 链式表操作集 (20 分) 本题要求实现链式表的操作集。 函数接口定义: Position Find( List L, ElementType X ); List Insert( List L, ElementType X, Position P ); List Delete( List L, Position P ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { ElementType Data 阅读详情

本题要求实现链式表的操作集。

函数接口定义:
Position Find( List L, ElementType X );
List Insert( List L, ElementType X, Position P );
List Delete( List L, Position P );
其中List结构定义如下:

typedef struct LNode *PtrToLNode;
struct LNode {
ElementType Data;
PtrToLNode Next;
};
typedef PtrToLNode Position;
typedef PtrToLNode List;
各个操作函数的定义为:

Position Find( List L, ElementType X ):返回线性表中首次出现X的位置。若找不到则返回ERROR;

List Insert( List L, ElementType X, Position P ):将X插入在位置P指向的结点之前,返回链表的表头。如果参数P指向非法位置,则打印“Wrong Position for Insertion”,返回ERROR;

List Delete( List L, Position P ):将位置P的元素删除并返回链表的表头。若参数P指向非法位置,则打印“Wrong Position for Deletion”并返回ERROR。

裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>

#define ERROR NULL
typedef int ElementType;
typedef struct LNode *PtrToLNode;
struct LNode {
ElementType Data;
PtrToLNode Next;
};
typedef PtrToLNode Position;
typedef PtrToLNode List;

Position Find( List L, ElementType X );
List Insert( List L, ElementType X, Position P );
List Delete( List L, Position P );

int main()
{
List L;
ElementType X;
Position P, tmp;
int N;

L = NULL;
scanf("%d", &N);
while ( N-- ) {
    scanf("%d", &X);
    L = Insert(L, X, L);
    if ( L==ERROR ) printf("Wrong Answer\n");
}
scanf("%d", &N);
while ( N-- ) {
    scanf("%d", &X);
    P = Find(L, X);
    if ( P == ERROR )
        printf("Finding Error: %d is not in.\n", X);
    else {
        L = Delete(L, P);
        printf("%d is found and deleted.\n", X);
        if ( L==ERROR )
            printf("Wrong Answer or Empty List.\n");
    }
}
L = Insert(L, X, NULL);
if ( L==ERROR ) printf("Wrong Answer\n");
else
    printf("%d is inserted as the last element.\n", X);
P = (Position)malloc(sizeof(struct LNode));
tmp = Insert(L, X, P);
if ( tmp!=ERROR ) printf("Wrong Answer\n");
tmp = Delete(L, P);
if ( tmp!=ERROR ) printf("Wrong Answer\n");
for ( P=L; P; P = P->Next ) printf("%d ", P->Data);
return 0;

}

/* 你的代码将被嵌在这里 */
输入样例:
6
12 2 4 87 10 2
4
2 12 87 5
输出样例:
2 is found and deleted.
12 is found and deleted.
87 is found and deleted.
Finding Error: 5 is not in.
5 is inserted as the last element.
Wrong Position for Insertion
Wrong Position for Deletion
10 4 2 5

Position Find( List L, ElementType X )
{
	while(L){
		if(L -> Data == X){
			return L;
		}
		L = L -> Next;
	}
	return ERROR;
}
List Insert( List L, ElementType X, Position P )//只考虑头结点和中间结点两种情况 
{
	List p = (List)malloc(sizeof(List));
	p -> Next = NULL;//初始化 不然后面乱指 不安全 
	p -> Data = X;
	List Head = L;//返回头指针 
	if(P == L){
		p -> Next = L;
		return p;
	}
	while(L){
		if(L -> Next == P){
			p -> Next = L -> Next;
			L -> Next = p;
			return Head;
		}
		L = L -> Next;
	}
	printf("Wrong Position for Insertion\n");
	return ERROR;
}

List Delete( List L, Position P )
{
	List Head = L;
	if(P == L){
		L = L -> Next;
		return L;
	}
	while(L){
		if(L -> Next == P){
			L -> Next = P -> Next;
		    return Head;
		}
		L = L -> Next;
	}
	printf("Wrong Position for Deletion\n");
	return ERROR;
}
Python 中 dpkt 库的详细使用指南(强大的 Python 数据包解析库) dpkt 是一个功能强大的 Python 网络数据包解析库,支持解析和构造以太网、IP、TCP/UDP 等多种协议的数据包。其核心功能包括解析各层协议头部、读写 pcap 文件、构造自定义数据包及分析 HTTP 流量等。dpkt 提供简单易用的 API,适用于网络分析、安全研究和流量监控场景。优化技巧包括数据包过滤、批量处理和选择性解析以提高性能,常见问题如数据不完整或协议识别错误可通过异常处理和字段验证解决。典型应用场景涵盖协议分析、网络调试和自定义数据包生成。 阅读详情

相关推荐

window下迁移SVN仓库到新的windows服务器

window下迁移SVN仓库到新的windows服务器

Bertram的博客 4692

使用C语言实现单链表的功能(带头节点)

使用C语言实现单链表的功能(带头节点)

Keep_Trying_Go的博客 1313

STM32 SPI驱动TFT LCD实战:时序配置与硬件协同

SPI(串行外设接口)是一种高速、全双工、同步串行通信协议,广泛应用于微控制器与显示模组等外设的数据交互。其核心依赖时钟极性(CPOL)与时钟相位(CPHA)组合定义的四种工作模式,直接影响数据采样可靠性;而片选(NSS)与MOSI/SCLK等信号的硬件映射,则决定了多设备共总线下的通信稳定性。在TFT LCD驱动场景中,SPI凭借低开销、高吞吐优势成为主流选择,尤其适配ST7789、ILI9341等集成显示控制器的模块。本文聚焦STM32L系列MCU通过SPI2驱动1.3寸LCD的完整链路,涵盖Mode

php55的博客 1211

数据结构 函数题6.5

#6-5 链式表操作集 (20分) 本题要求实现链式表的操作集。 函数接口定义: Position Find( List L, ElementType X ); List Insert( List L, ElementType X, Position P ); List Delete( List L, Position P ); Position Find( List L, ElementType X ) { while(L) { if(L->Data==X) return L;

weixin_48314398的博客 208

华为OD机试双机位C卷-热点网站统计 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 热点网站统计,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为od机考真题 - 热点网站统计。

qq_45776114的博客 779

《QEMU/KVM源码分析与应用》读书笔记4 —— 第2章 QEMU基本组件(1)

《QEMU/KVM源码分析与应用》读书笔记4 —— 第2章 QEMU基本组件(1)

phmatthaus的专栏 1476

PTA 6-5 链式表操作集

数据结构与算法题目集(中文) 6-5 链式表操作集

stephen_yoga的博客 1249

YOLOv11低照度增强主干网络PE-YOLO:原理与完整实现教程

编码器部分# 解码器部分self.dec_conv2 = nn.Conv2d(512, 128, 3, padding=1) # 跳跃连接self.dec_conv3 = nn.Conv2d(256, 64, 3, padding=1) # 跳跃连接self.dec_conv4 = nn.Conv2d(128, 32, 3, padding=1) # 跳跃连接# 编码路径# 解码路径(带跳跃连接)

FJN110的博客 727

PTA——6-3 带头结点的链式表操作集

其中List结构定义如下:PtrToLNode;//是自定义的数据类型,它代表节点中存储的数据//Next是一个指向结构体的指针,它用于指向下一个节点//这里把PtrToLNode类型重命名为Position//同样是把PtrToLNode类型重命名为Listtypedef属于 C 语言的关键字,其作用是为已有的数据类型创建新的别名。是一个结构体类型,不过此时还未对其具体内容进行定义。代表指向结构体的指针类型。PtrToLNode就是为这个指针类型所定义的新别名。

m0_58293236的博客 1543

【制作100个unity游戏之30】使用unity实现一款2d俯视角RPG战斗游戏,主要使用InputSystem+有限状态机+A*寻路实现(完结,附带项目源码)

【制作100个unity游戏之30】使用unity实现一款2d俯视角RPG战斗游戏,主要使用InputSystem+有限状态机+A*寻路实现

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4656

【06】新国都——新国都 嵌入式笔试,校招,题目记录及解析

本文总结了新国都嵌入式校招笔试题目及解析,内容涵盖C语言基础、Linux系统、数据结构与算法等多个方面。主要包括:1)不定项选择题10道,涉及字符串常量、蓝牙与GPRS区别、编译错误识别等;2)判断题10道,考察Linux权限、循环控制、内存管理等;3)填空题5道,包括编码计算、逻辑运算、宏定义等;4)简答题2道,解析全局变量引用和进程线程区别。题目难度适中,重点考察嵌入式开发基础知识和编程能力,并提供详细解析和扩展知识链接,对准备嵌入式相关笔试具有参考价值。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1434

6-5 链式表操作集 (20分)PTA

PTA6-5 链式表操作集 (20分) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200319155356745.PNG?x-oss-`#include <stdio.h> #include <stdlib.h> #define ERROR NULL typedef int ElementType; typedef struct ...

sunshineyier的博客 584

华为OD机试双机位C卷-组装新的数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【组装新的数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 组装新的数组。

qq_45776114的博客 1145

PTA6-6 带头结点的链式表操作集

PTA6-6 带头结点的链式表操作集 函数定义接口: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中list结构定义如下: typedef struct ...

Soulstrong的博客 417

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

PTA 复习 6-6 带头结点的链式表操作集 (知识点总结)

PTA 复习 6-6 带头结点的链式表操作集 本题要求实现带头结点的链式表操作集。 文章目录PTA 复习 6-6 带头结点的链式表操作集本题要求实现带头结点的链式表操作集。函数接口定义:裁判测试程序样例:输入样例:输出样例:解题代码:一、细节分析:二、知识点总结:1、有表头和没有表头的的区别:链表的基础知识:需要注意的情况:带有头结点遍历输出数据时`while (Head->Next != NULL)`不带有头结点的链表输出数据时`while (Head != NULL)`2

weixin_44640697的博客 1162

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

PTA6-5 链式表操作集

PTA6-5 链式表操作集 本题要求实现链式表的操作集。 函数接口定义: Position Find( List L, ElementType X ); List Insert( List L, ElementType X, Position P ); List Delete( List L, Position P ); 其中List结构定义如下: typedef struct LNode *Pt...

Soulstrong的博客 688

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

6-9 链式表操作集 (20 分)PTA

本题要求实现链式表的操作集。 函数接口定义: Position Find( List L, ElementType X ); List Insert( List L, ElementType X, Position P ); List Delete( List L, Position P ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; str...

qq_18873031的博客 583

6-5 链式表操作集 (20分)

数据结构与算法题目集(中文) 6-5 链式表操作集 (20分) 本题要求实现链式表的操作集。 函数接口定义: Position Find( List L, ElementType X ); List Insert( List L, ElementType X, Position P ); List Delete( List L, Position P ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { Element

我的博客 291

PTA 带头结点的链式表操作集 (20 分)

本题要求实现带头结点的链式表操作集。 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { ElementType D.

小白兔奶糖の博客 539

PTA数据结构与算法题目集(中文) 6-6 带头结点的链式表操作集 (20 分)

本题要求实现带头结点的链式表操作集。 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下: typedef...

好学者的博客 576

6-10 带头结点的链式表操作集 (20 分)PTA

本题要求实现带头结点的链式表操作集。 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下: typedef struct...

qq_18873031的博客 359

6-6 带头结点的链式表操作集 (20分)

好久没有一遍过了(逃 List MakeEmpty(){ List L = (List)malloc(sizeof(List)); L->Next = NULL; return L; } Position Find( List L, ElementType X ){ while(L->Next){ if (L->Next->Data == X){ return L->Next; } .

Mrrr_Li的博客 209

PTA数据结构6-1——6-6

其中List结构定义如下:/* 存储结点数据 */ PtrToNode Next;/* 指向下一个结点的指针 */ };/* 定义单链表类型 */L是给定单链表,函数Reverse要返回被逆转后的链表。

m0_73055492的博客 723

6-5 链式表操作集

本题要求实现链式表的操作集。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4115

PTA 数据结构与算法题目集(中文)6-4 链式表的按序号查找

6-4 链式表的按序号查找(10 分)本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K ); 其中List结构定义如下:typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; ty...

qq_39008204的博客 2287

6-6 带头结点的链式表操作集

本题要求实现带头结点的链式表操作集。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4239
上一篇: PTA 实现单链表逆转
下一篇: PTA 最大子列和问题 四种方法
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值