北京邮电大学信息与通信工程学院
};
LinkList(T a[], int n);//有参构造函数,使用含有n个元素的数组a初始化单链表 ~LinkList();
//析构函数,(其在void main 函数最后一句语句之后自动执行,旨在//按次序遍历线性表中的各个数据元素 //获取线性表的长度
//获取线性表第i个位置上的元素结点地址 //查找线性表中值为x的元素,找到后返回其位置
释放栈空间)
void PrintList(); int GetLength(); int Locate(T x);
Node
void Insert(int i, T x);//后插,在线性表的第i个位置上插入值为x的新元素 void insert(int i, T x);//前插,在线性表的第i个位置上插入值为x的新元素 T Delete(int i); Node
//删除线性表第i个元素,并将该元素返回 //头指针
private:
//头插法构造函数 template
LinkList
//尾插法构造函数 //template
//LinkList
// front = new Node < T > ;
for (int i = n - 1; i >= 1; i--)//冒泡排序,对数组进行从小到大排序 { }
front = new Node < T >;//为头指针申请堆空间 front->next = NULL;//构造空单链表 for (int i = n - 1; i >= 0; i--) { }
Node
front->next = s;//修改头结点的指针域,将新结点加入到链表中 for (int j = 0; j < i; j++) { }
if (a[j]>a[j + 1]) { }
T t = a[j + 1]; a[j + 1] = a[j]; a[j] = t;
第13页
北京邮电大学信息与通信工程学院
// Node
//Node
//r->next = NULL; //}
template
void LinkList
template
LinkList
template
Node
Node
while (p && (k != i)) { } return p;
p = p->next; k++;
Node
front = p; p = p->next;
delete front;//释放结点 Node
cout << endl;
cout << p->data << \\p = p->next;
第14页
北京邮电大学信息与通信工程学院
template
int LinkList
template
void LinkList
template
T LinkList
Node
if (i != 1) p = Get(i - 1);//若不是在第一个位置删除,获取第i-1个元素的地址 try {
if (p && (p->next)) {
Node
Node
if (i != 1) p = Get(i - 1); try { }
catch (int i) { }
cout << \插入到位置 \处\为错误位置\if (p) { }
else throw i;
Node
Node
while (p&&(p->data != x)) { } return k;
p = p->next; k++;
第15页
北京邮电大学信息与通信工程学院
}
}
}
p->next = q->next; T x = q->data; delete q; return x;
else throw i;
catch (int i) { }
cout << \删除位置 \处\为错误位置\
template
int LinkList
void main() {
int m=1;
int a[7] = { 3, 2, 1, 4, 6, 5, 7 }; LinkList
cout << \
<< \※ ※\<< \※ 对该单链表的操作 ※\<< \※ ※\<< \※ 1. 获取线性表的长度 ※\<< \※ ※\<< \※ 2. 查找值为x的元素,并返回其位置 ※\<< \※ ※\<< \※ 3. 在线性表的第i个位置上插入值为x的新元素 ※\<< \※ ※\<< \※ 4. 删除线性表第i个元素,并将该元素返回 ※\<< \※ ※\
<< \Node
for (i = 0; p != NULL; i++) { } return i;
p = p->next;
while (m != 0)
第16页

