您的位置:首页 > 理论基础 > 数据结构算法

数据结构-单链表节点的删除

2017-10-10 15:10 489 查看

数据结构-单链表节点的删除

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte

总提交:208            测试通过:105

描述

单链表节点的删除操作是线性表数据结构对象操作的重要内容,请您写一个程序完成对一个单链表某一个节点的删除操作。

请用如下函数完成上述功能,线性表List的定义如下(强烈建议使用下面的定义和函数结构)

typedef struct LNode

{

Elemtype data;

struct LNode *next;

}LNode,*LinkList;

int ListDelete_L(LinkList &L,int i,Elemtype &e)

输入

输入有多组测试数据,每组测试数据包括1行,用空格隔开的1个数字和多个字母,数字表示要删除节点在线性表中的位置,紧接着几个字母表示要删除节点线性表的名称,后面的字母表示线性表的当前的内容。

输出

如果删除失败,输出ERROR,否则输出OK,并输出删除节点后线性表的内容。

样例输入

7 L1 = (DEGIKNQTV)

4 L2 = (CFG)

样例输出

ListDelete_L(L1, 7, e) = OK, L1 = (DEGIKNTV),  e = 'Q'

ListDelete_L(L2, 4, e) = ERROR, L2 = (CFG)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef char Elemtype;
char a[10];
char b[10];
typedef struct LNode
{
Elemtype data;
struct LNode *next;
} LNode,*LinkList;
int create(LinkList &l)
{
char c;
int x=0,f=0,f1=0;
l = new LNode;
LinkList k = new LNode;
l->next=k->next=NULL;
while(cin>>c&&c!='(') {}
while(cin>>c&&c!=')')
{
LinkList p = new LNode;
p->data=c;
p->next=NULL;
k->next=p;
k=p;
x=0;
if(f==0)
{
l->next=k;
f=1;
}
}
LinkList p = new LNode;
p=l->next;
}
int  ListInsert_L(LinkList &l,int i)
{
int j=1;
LinkList p=new LNode;
p=l;
while(p&&j<i)
{
j++;
p=p->next;
}
if(j<i||!p)
{
return 0;
}
LinkList q=new LNode;
q->data=a[0];
q->next=p->next;
p->next=q;
return 1;
}
int input(LinkList l)
{
LinkList p = new LNode;
p=l->next;
while(p)
{
cout<<p->data;
p=p->next;
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
LinkList la;
scanf("%s",a);
scanf("%s",b);
create(la);
int k=ListInsert_L(la,n);
if(k==1)
{
printf("ListInsert_L(%s, %d, '%c') = OK, %s = (",b,n,a[0],b);
input(la);
printf(")\n");
}
else if(k==0)
{
printf("ListInsert_L(%s, %d, '%c') = ERROR, %s = (",b,n,a[0],b);
input(la);
printf(")\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: