#include<stdio.h>
typedef struct node{
int data;
node * next;
}*Linklist;
int InitList( Linklist &L){
L=new node;
L->next=NULL;
}
int GetListelemt(Linklist L,int i,int &e){
Linklist p;
p=L->next;
int j=1;
while(p&&j<i){
p=p->next;
j++;
}
if(!p||j>i)return 0;
else e=p->data;
return 1;
}
node* SearchList(Linklist L,int elemt){
Linklist p;
p=L->next;
while(p&&p->data!=elemt)
p=p->next;
return p;
}
int InsertList(Linklist &L,int elemt,int position){
Linklist p;
p=L->next;
int j=0;
while(p&&(j<position-1)){
p=p->next;
j++;
}
if(!p||j>position) return 0;
node *Nnode;
Nnode=new node;
Nnode->next=p->next;
p->next=Nnode;
Nnode->data=elemt;
return 1;
}
int DeleteList(Linklist &L,int position ){
Linklist p;
p=L;
int j=0;
while(p&&(j<position-1)){
p=p->next;
j++;
}
if(!p||j>position) return 0;
node* q;
q=p->next;
p->next=q->next;
delete q;
return 1;
}
单链表,基本的操作,注意插入和删除,游标指针是要停在要删除和插入位置的前一个节点,单向链表只能是找到下一节点,没有前驱指针。删除操作时要注意指针的调整顺序和将要删除的节点用指针保存,以免找不到要删除的节点,导致不良后果。