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

来源:互联网 发布:nx飞行战记 知乎 编辑:程序博客网 时间:2024/06/07 01:49

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

时间限制(普通/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;}


阅读全文
0 0
原创粉丝点击