数据结构:链表

单链表

1.创建:

头插法

while(x!=-1){

  s=(LinkList)malloc(sizeof(LNode));

  s->data=x;

  s->next=H->next;

  H-next=s;

}

return H;

尾插法

while(x!=-1){

  s=(LinkList)malloc(sizaof(LNode));

  s->data=x;

  s->next=r->next;

  r->next=s;

  r=x;

}

return H;

2.查找Get_Linklist(H,k)

while(p->next!=null&&j<k){

  p=p->next;

  j++;

}

if(j==k) return p;

else return NULL;



3.插入操作

将s插入到p后面

s->next=p->next;

p->next=s;

将s插入到p的前面

q=H;

while(q->next!=p){

  q->next=q;

s->next=q->next;

q->next=s;

将s插在第i个节点的位置上

p=Get_Linklist(H,i-1);

if(p==NULL) 插入错误

else{

  s->next=p->next;

  p->next=s;

  return true;

}

4.删除

p=Get_LinkList(H,i-1);

if(p==null&&p->next==null) return error;

else{

  q=p->next;

  p->next=q->next;

  free(q);;

  return true;

}



循环链表

1.合并

p=RA->next;

RA->next=RB->next->next;

free(RB->next);

RB->next=p;



双向链表

(p->prior->next=p,p=p->next->prior)

1.将s插入到p的前面

s->prior=p->prior;

p->prior->next=s;

s->next=p;

p->prior=s;

2.删除操作

p->prior->next=p->next;

p->next->prior=p->prior;

free(p);

 

你可能感兴趣的:(数据结构)