- 实验目的:
掌握链表的基本操作和使用
- 实验内容:
1.编写一个算法判断链表中的数据项是否按从小到大排序,该链表的第一个节点由first指向
2.对于给定的整数n,编写一个算法把新节点插入到链表中第n个节点之后的位置,该链表的第一个节点由first指向
3.编写一个算法来颠倒一个链表,该链表的第一个节点由first指向。不要复制列表元素;而是重置链表和指针,使得first指向原来的最后一个节点,且结点之间所有的链接反向
(要求在原链表上直接实现反转,而不是另外创建新链表、或借助其他数据结构实现)
三、实验过程
1. 第一题
(1)程序代码
#include <iostream>
using namespace std;
template < typename T>
class node {
public:
T nodeValue;//data
node<T>* next;//next node
node():next(NULL){}
node(const T&item,node<T>*nextNode):nodeValue(item),next(nextNode){}
};//定义一个模板节点
int main()
{
//反向创建一个长度为5的链表,键入data
node<int>* first = NULL, * newNode; int a;
for (int i = 0; i < 5;i++) {
cin >> a;
first = new node<int>(a, first);
}
//遍历链表,判断是否符合标准;
node<int>* p = first; bool flag=true;
while