用单链表存储线性表,写出在带头结点的单链表中插入数据元素e作为单链表的第i个元素的算法和求单链表长度ListLength()的算法。 Typedef struct Lnode { ElemType data; //数据域 struct Lnode *next; //指针域 }Lnode, *LinkList; bool ListInsert(LinkList &L, int i, ElemType e){ int ListLength( LinkList L ){
时间: 2024-02-22 17:55:41 浏览: 91
插入数据元素e作为单链表的第i个元素的算法:
```
bool ListInsert(LinkList &L, int i, ElemType e){
if(i < 1){ //i小于1无意义
return false;
}
Lnode *p = L; //p指向头结点
int j = 0; //j表示当前p指向的结点是第几个结点
while(p && j < i - 1){ //查找第i-1个结点
p = p->next;
j++;
}
if(!p){ //i大于表长加1,插入无效
return false;
}
Lnode *s = new Lnode; //新建结点s
s->data = e;
s->next = p->next;
p->next = s;
return true;
}
```
求单链表长度ListLength()的算法:
```
int ListLength(LinkList L){
int len = 0;
Lnode *p = L->next; //p指向第一个结点
while(p){ //遍历单链表
len++;
p = p->next;
}
return len;
}
```
阅读全文