【问题描述】删除单链表(带头结点,头插入法建立单链表)的第i个结点
【样例输入1】
5
6 7 8 9 10
3
【样例输出1】 10 9 7 6
【样例输入2】
1
8
1
【样例输出2】 null
【样例输入3】
1
8
2
【样例输出2】 error
【样例说明】第一行输入链表长度5,第二行依次输入链表元素,以空格间隔,第三行输入删除的元素序列3.
以空格间隔依次输出删除后的单链表元素,若为空表则输出null,若为无效删除,则输出error。
#include<iostream>
#include<malloc.h>
#define ERROR 0
#define OK 1
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*linklist;
void Initlist(linklist &L)
{
L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
}
void creatlist(linklist &L,int n)
{
L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
for(int i=0;i<n;i++)
{
LNode *p;
p=(LNode*)malloc(sizeof(LNode));
cin>>p->data;
p->next=L->next;
L->next=p;
}
}
int Listdelete(linklist &L,int i)
{
LNode *p,*q;
int j=0;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return ERROR;
q=p->next;
p->next=q->next;
delete q;
return OK;
}
void print(linklist &L)
{
LNode *p;
p=L->next;
if(p)
{ while(p)
{
cout<<p->data ;
p=p->next;
}
}
else if(p==NULL)
cout<<"null";
else
cout<<"error";
}
int main()
{
int n,i;
cin>>n;
linklist L;
Initlist(L);
creatlist(L,n);
cin>>i;
Listdelete(L,i);
print(L);
return 0;
}
运行不出来该怎么改?