#include<iostream>
using namespace std;
typedef struct LNode {
int data;
struct LNode *next;
}LNode , *LinkList;
LNode *p,*q;
LinkList H;
//求链表的长度
int ListLength(LinkList L)
{
p = L;
int k = 0;
while(p){
k++;
p = p->next;
}
return k;
}
// 查找元素操作
LNode *Locate(LinkList L,int e) //e's type is int
{
//在L所指链表中查找第一个值和e相等的元素,若存在,则返回
//它在链表中的位置,即指向该数据的元素所在节点的指针,否则返回NULL
p = L; //用指针的方法代替下标,需要用一个节点类型的指针替换一下,以便操作
while(p && p->data != e) p = p->next;
return p;
}
//插入节点操作(前插)
void Insert (LinkList &L,LNode *p,LNode *s)
{
//指针p指向L为头节点的链表中某个节点,将s节点插入到p节点之前
if (p == L){
s->next = L;
L = s;
} else {
q = L;
while( q->next !=p ) q = q->next;//迭代查找
q->next = s;
s->next = p;
}
}
//删除节点的操作
void Delete(LinkList &L,LNode *p,int e)
{
//p 指向链表中的某一个节点,从链表中删除该节点并由e返回该节点的值
if( p == L) //L 就代表头节点
{
L = p->next;
}else{
q = L;
while(q->next != p)q = q->next; //p,q 都是地址,且p-〉next也是地址
q->next = p->next;
}
e = p->data;
delete p;
}
链表的操作(未完待续)
最新推荐文章于 2024-10-16 11:00:59 发布