#include<stdio.h>
#include <malloc.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
void creatL(LinkList &L,int a[],int n){
LNode *r;
LNode *p;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
r = L;
for(int i =0;i<n;i++){
p = (LinkList) malloc(sizeof(LNode));
p->next = NULL;
p->data = a[i];
r->next = p;
r = p;
}
}
//单链表删除算法
bool ListDelete_L(LinkList L, int pos, int &e)
{
LNode *p = L;int k = 0;
while(p->next&&k<pos-1){
p = p->next;
k++;
}
if(!p->next||k>pos-1)
return false;
LNode *s = p->next;
p->next = p->next->next;
e = s->data;
free(s);
return true;
}
int main(){
LNode *L;
int a[5] = {1,3,5,7,9};
int e;int pos;
creatL(L,a,5);
LNode *read;
read = L->next;
while(read){
printf("%d ",read->data);
read = read->next;
}
printf("\n请输出删除元素的位置:");
scanf("%d",&pos);
if(ListDelete_L(L,pos,e))
printf("删除成功:%d\n",e);
else
printf("删除失败\n");
read = L->next;
while(read){
printf("%d ",read->data);
read = read->next;
}
return 0;
}