目录
题目要求:
本题要求实现一个函数,删除单链表中所有值为x的元素,并返回删除的个数。
函数接口定义:
int Delete2(LinkList &L,ElemType x)
解释接口参数:其中L
, x
,a
都是用户传入的参数。 L
是指向单链表头结点的指针,单链表结点有两个成员,一个是data域,存放该结点的数据元素,不特别说明的话元素类型为整型,一个是next域 ,指向下一个结点;x
是指要指给定值,等于该值的元素将被删除。函数返回的值为删除的元素个数(可以为0)。
裁判测试程序样例:
#include<iostream>
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct node {
ElemType data;
struct node *next;
}LNode,*LinkList;
Status InitList_Lk(LinkList &L) ; // 单链表的初始化,已实现,不用再定义
void CreatList(LinkList &L,int n); //创建含有n个元素的单链表,已实现,不用再定义
void ViewList(LinkList L) ;//打印单链表,已实现,不用再定义
int Delete2(LinkList &L,ElemType x);//要实现的函数
int main()
{
LinkList L;
ElemType x;
int i, n, c;
InitList_Lk(L);
cin >> n;
CreatList(L, n);
cin >> x;
c=Delete2(L, x);
cout << "删除了"<<c<<"个元素";
return 0;
}
输入样例:
在这里给出一组输入。例如:
10
34 56 12 5 7 55 78 12 12 6
12
输出样例:
在这里给出相应的输出。例如:
删除了3个元素
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
学习时间:
2022/10/8
- 星期六晚上21:00
- 整体思路就是碰到规定的x值后将next往后移一位就行
随便写写的答案:
int Delete2(LinkList &L,ElemType x)
{
LinkList p = L;
int num=0;
while(p->next != NULL)
{
if(p->next->data == x)
{
p->next = p->next->next;
num++;
}
else
p=p->next;
}
return num;
}