程序填空题:单链表删除操作
单链表删除操作。
```
#include
using namespace std;
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;
void CreateList(LinkList &L, int n) ;//该函数未显示细节
int ListDelete_L(LinkList &L, int i) {
LinkList p, q;
int j;
p = L;
j = 0;
while (@@[(p->next) && (j < i - 1)](2))
{
p = p->next;
++j;
}
if (!(p->next) || (j > i - 1))
return ERROR;
q = p->next;
@@[p->next = q->next; ](2)
delete q;
return OK;
}
void print(LinkList &L)
{
LinkList p;
int flag=1;
p = L->next;
while (p) {
if(flag)
cout << p->data;
else
cout << " "<< p->data;
flag=0;
p = p->next;
}
}
int main() {
LinkList L;
ElemType e;
int length;
int i;
cin >> length;
CreateList(L, length);
cin >> i;
ListDelete_L(L,i);
print(L);
return 0;
}
```
答案:
第1空:(p->next) && (j < i - 1)
第2空:p->next = q->next;
```
#include
using namespace std;
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;
void CreateList(LinkList &L, int n) ;//该函数未显示细节
int ListDelete_L(LinkList &L, int i) {
LinkList p, q;
int j;
p = L;
j = 0;
while (@@[(p->next) && (j < i - 1)](2))
{
p = p->next;
++j;
}
if (!(p->next) || (j > i - 1))
return ERROR;
q = p->next;
@@[p->next = q->next; ](2)
delete q;
return OK;
}
void print(LinkList &L)
{
LinkList p;
int flag=1;
p = L->next;
while (p) {
if(flag)
cout << p->data;
else
cout << " "<< p->data;
flag=0;
p = p->next;
}
}
int main() {
LinkList L;
ElemType e;
int length;
int i;
cin >> length;
CreateList(L, length);
cin >> i;
ListDelete_L(L,i);
print(L);
return 0;
}
```
答案:
第1空:(p->next) && (j < i - 1)
第2空:p->next = q->next;