一.单链表节点的类型定义
typedef int ElemType
typedef struct node {
Elmetype data;
struct node *next;
}LNode,*LinkList;
LNode *h,*p;//Linklist h,p;
其中
(*p)表示p指向的节点
(*p).data<=>p->data表示p指向节点的数据域
(*p).next<=>p->next表示p指向节点的指针域
二.带头结点的单链表的初始化
int LnitList (LinkList &L)
{
L=new LNode;
if(L==NULL) return error;//判断空间是否申请成功
L->next=NULL;
return 1;
}
链表的输出
void OUT(LinkList H)
{
LNode *p;
p=H->next;
while (p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
}
三. 求链表的表长
int ListLength<LinjList L>
{
LNode *p;int j;
p=L->next;//p指向第一节点
j=0;
while (p!=NULL)
{j++;p=p->next;}//移动p指向下一节点
return j;
}
四、取第i个元素 (找到第i个元素的地址)
LinkList ListGet(LinkList L,int i)
{
LNode *p;int j;
if(i<1) return error;
p=L->next; j=1;
while (p!=NULL&&j<i)
{
p=p->next;
j++;
}
if(j==i) return p;
else return NULL;
}
五、找值为X的节点
LinkList ListFind(LinkList H,ElemType x)
{
LNode *p;
p=H->next;
while (p!=NULL&&p->data!=x)
{
p=p->next;
}
if(!p) return error;
else return p;
}
六、找L中P的前驱