#include<stdio.h>
#include<malloc.h>
typedef int ElemType;
#define Status int
#define ERROR 0
#define OK 1
//****单链表的存储结构
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//其实这里定义LNode与*LinkList作用都是一样的,不要纠结这些
//初始化操作
Status InitList(LinkList &L)
{
L=new LNode;
L->next=NULL;
return OK;
}
//单链表的取值
Status GetElem(LinkList L,int i,ElemType &e)
{
LNode *p;
p=L->next;
int j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(p||j>i)//其实我这个地方开始还有点不懂(j>i),当i不合法时的判断
return ERROR;
e=p->data;
return OK;
}
//查找
LNode *LocateElem(LinkList L,ElemType e)
{
LNode *p;
p=L->next;
while(p||p->data!=e)
p=p->next;
return p;
}
//插入
Status ListInsert(LinkList &L,int i,ElemType e)
{
LNode *p;
p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(p||j>i-1)
return ERROR;
LNode *s;
s=new LNode;
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
//删除操作
Status ListDelete(LinkList &L,int i)
{
LNode *p;
p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(p||j>i-1)
return ERROR;
p->next=p->next->next;
return OK;
}
int main()
{
LinkList L;
InitList(L);
int i,e;
GetElem(L,i,e);
return 0;
}