数据结构-单链表节点的删除
2017-10-10 15:58
375 查看
数据结构-单链表节点的删除
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:210 测试通过:106
描述
单链表节点的删除操作是线性表数据结构对象操作的重要内容,请您写一个程序完成对一个单链表某一个节点的删除操作。
请用如下函数完成上述功能,线性表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 st; typedef struct LNode { Elemtype data; struct LNode *next; } LNode,*LinkList; void create(LinkList &l) { l=new LNode; LinkList k=new LNode; l->next=k->next=NULL; char str; int f=0; while(cin>>str&&str!='(') { } while(cin>>str&&str!=')') { LinkList p=new LNode; p->data=str; p->next=NULL; k->next=p; k=p; if(f==0) { l->next=k; f=1; } } } int ListDelete_L(LinkList &l,int i) { int j=1; LinkList k; LinkList p=new LNode; p=l; while(p&&j<i) { j++; p=p->next; } if(!p->next||j<i) { return 0; } k=p->next; st=k->data; //cout<<(p->next)->data<<endl; p->next=k->next; return 1; } void 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) { char b[100]; LinkList la; scanf("%s",b); create(la); int k=ListDelete_L(la,n); if(k==0) { printf("ListDelete_L(%s, %d, e) = ERROR, %s = (",b,n,b); input(la); printf(")\n"); } if(k==1) { printf("ListDelete_L(%s, %d, e) = OK, %s = (",b,n,b); input(la); printf("), e = '%c'\n",st); } } return 0; }
相关文章推荐
- 数据结构:设有一个不带头结点的单链表L,设计两个递归算法,del(L,x)删除单链表L中第一个值为x的节点,delall(L,x)删除单链表L中的最小节点值。
- Java数据结构-线性表之单链表应用-重复节点的删除
- 左程云_算法与数据结构 — 链表问题 — 02在单链表和双链表中删除倒数第K个节点
- 数据结构 在单链表和双链表中删除倒数第K个节点
- 数据结构之链表面试题汇总(四)得到两个单链表相交的第一个交点、用O(1)的时间效率删除单向链表中的指定节点
- 删除单链表中的重复节点(删除多余项)
- 删除单链表中偶数节点
- 数据结构—— 二叉树数据结构的节点删除问题
- 数据结构(三)——单链表的整表创建与删除
- 链表之删除单链表倒数第K个节点
- 【数据结构】C语言实现链表节点的插入和删除
- 单链表的节点内数据值的删除问题(携程网笔试题)
- 数据结构-单链表节点的删除
- 剑指offer10--O(1)的时间实现单链表节点的删除
- 单链表删除一个节点(平安科技)
- 数据结构(二)单链表的逆序(带头节点)
- 删除单链表中的重复节点(删除重复项)
- linus建议的删除单链表指定节点的方法
- 应用数据结构(一)线性表节点的插入和删除算法
- 单链表删除(Delete)或者去除(Remove)节点面试题总结