Description
创建一个链表(有头结点),指定该链表的大小n,输入链表的n个元素,创建链表,输入要删除的值e,将链表L中所有值为e的元素删除,并输出删除元素后的链表。
Input
仅有一组测试数据
第一行:输入一个整数n表示链表的长度(1<n<1000)
第二行:输入n个整数,整数之间用空格分隔
第三行:输入一个整数e表示要删除值
Output
输出剩余的整数,用空格间隔,注意:最后一个输出的整数后面没有空格!!!
Sample Input
6
43 23 56 66 56 68
56
Sample Output
43 23 66 68
//在链表L中删除全部值为e的数据元素
#include <bits/stdc++.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 2
typedef int Status;
typedef int Boolean;
typedef int ElemType;
using namespace std;
typedef struct Lnode
{
ElemType data;
struct Lnode *next;
}Lnode,*Linklist;
Status GetElem(Linklist &L,int i,ElemType &e)
{
Linklist p;
p=L->next;
int j=1;
while(p && j<i)
{
p=p->next;
++j;
}
if(!p || j>i)
return ERROR;
e = p -> data;
return OK;
}
Status ListInsert(Linklist &L,int i,ElemType e)
{
Linklist p,s;
int j;
p=L;
j=0;
while(p && j<i-1)
{
p=p->next;
++j;
}
if(!p || j<i-1)
return ERROR;
s=(Linklist)malloc(sizeof(Lnode));
s->data=e;
p->next=s;
return OK;
}
Status ListDeletei(Linklist &L,int i,ElemType &e)
{
Linklist p,q;
int j;
p=L;
j=0;
while(p->next || j<i-1)
{
p=p->next;
++j;
}
if(!(p->next) || j>i-1)
return ERROR;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return OK;
}
Status ListDeletee(Linklist &L,ElemType &e)
{
Linklist p,q;
p=L;
while(p->next)
{
if(p->next->data==e)
{
//cout<<"right search"<<endl;
q=p->next;
p->next=p->next->next;
free(q);
//cout<<"delete ok"<<endl;
}
p=p->next;
}
return OK;
}
void CreateList(Linklist &L,int n)
{
Linklist p,last;
int temp;
L=(Linklist)malloc(sizeof(Lnode));
L->next=NULL;
last=L;
for(int i=0;i<n;++i)
{
p=(Linklist)malloc(sizeof(Lnode));
cin>>temp;
p->data=temp;
last->next=p;
last=p;
last->next=NULL;
}
}
Status LocateElem(Linklist &L,ElemType e)
{
Linklist p;
p=L;
while(p && p->data!=e)
p=p->next;
if(p)
return OK;
else
return ERROR;
}
void showList(Linklist &L)
{
Linklist p;
p=L->next;
cout<<p->data;
p=p->next;
while(p)
{
cout<<" "<<p->data;
p=p->next;
}
}
int main()
{
Linklist L;
int n,del;
cin>>n;
CreateList(L,n);
cin>>del;
ListDeletee(L,del);
showList(L);
}