单向链表创建与遍历
2017-06-18 20:56
281 查看
单向链表的节点基本由2个元素组成——数据字段和指针,前者存储数据,后者指向下一个元素的内存所在地址。在C++中动态创建单向链表,一般先定义一个类,类中包含数据字段和指针,该指针的类型与此类相同,作用就是指向下一个链表节点。设ptr为链表的读取游标,创建链表节点的C++算法是:
1.ptr指向链表头;
2.动态分配内存给新节点;
3.将ptr指针指向新节点内存,表示这是新的链表尾部;
4.新节点当前为链表的最后一个元素,所以将它的指针(Next)指向NULL;
5.将链表尾部的指针(Next)指向下一新元素。
1.ptr指向链表头;
2.动态分配内存给新节点;
3.将ptr指针指向新节点内存,表示这是新的链表尾部;
4.新节点当前为链表的最后一个元素,所以将它的指针(Next)指向NULL;
5.将链表尾部的指针(Next)指向下一新元素。
prt->Next = NewNode; NewNode->Next = NULL; ptr = ptr->Next;
#include <iostream> using namespace std; class List { public: // 数据字段 int iNum; int iScore; char cName[12]; //指针 class List *Next; }; typedef class List Node; typedef Node *SingleLinkedList; int main() { SingleLinkedList pHead; //链表头 SingleLinkedList pNewNode; //新节点 SingleLinkedList ptr; //遍历游标 //创建链表头 cout<<"请输入5位学生的数据:"<<endl; pHead = new Node; //创建链表头的指针 if (!pHead) { cout << "内存分配失败!" << endl; return false; } cout << "请输入第1位学生的学号:"; cin >> pHead->iNum; cout << "请输入第1位学生的姓名:"; cin >> pHead->cName; cout << "请输入第1位学生的成绩:"; cin >> pHead->iScore; ptr = pHead; //ptr指向链表头 //创建其余4个节点 for (int i = 0;i < 4;i++) { pNewNode = new Node; //动态分配内存给新节点 if(!pNewNode) { cout << "内存分配失败!" <<endl; return false; } cout << "请输入第" << i+2 << "位学生的学号:"; cin >> pNewNode->iNum; cout << "请输入第" << i+2 << "位学生的姓名:"; cin >> pNewNode->cName; cout << "请输入第" << i+2 << "位学生的成绩:"; cin >> pNewNode->iScore; ptr->Next = pNewNode; //将ptr指针指向新节点内存,表示这是新的链表尾部 pNewNode->Next = NULL; //新节点当前为链表的最后一个元素,所以将它的指针(Next)指向NULL ptr = ptr->Next; //将链表尾部的指针(Next)指向下一新元素 } //遍历输出 cout << "输出链表内容为: 4000 " << endl; cout << " 学号\t姓名\t\t成绩" << endl; ptr = pHead; //ptr指向链表头 while(NULL != ptr) { cout << ptr->iNum << "\t" << ptr->cName << "\t" << ptr->iScore << endl; ptr = ptr->Next; } //释放内存 ptr = pHead; //ptr指向链表头 SingleLinkedList pTemp; while(NULL != ptr) { pTemp = ptr; ptr = ptr->Next; delete pTemp;pTemp = NULL; } return true; }
相关文章推荐
- 单向链表的创建和遍历
- 单向链表的创建、遍历、求长、判存、判空、插入、删除、查找(按位置或元素)、合并
- 单向链表的创建与遍历(先进先出和先进后出)
- java实现单向链表--创建、遍历
- 单向链表的创建和遍历
- 单向链表的相关操作(创建,遍历,插入,删除,逆置)
- 两种方法实现单向链表的创建、遍历、删除、查找、逆序输出(循环法和递归法)
- 单向链表的创建与遍历
- C语言 单向链表的创建、遍历、排序、删除操作
- 单向链表(一) 节点结构体、创建链表、释放链表、遍历链表
- 单向链表的相关操作总结:创建、删除、查找、排序、统计链表大小、链表的反转和遍历等
- 单向循环链表创建、遍历、插入、删除、查找(按位置,按元素值)、清空、销毁
- 简单链表的创建与遍历
- 程序员面试100题(算法)之反转单链表(含单向链表的创建和打印)
- 链表的创建和遍历
- 单向链表->创建节点
- 链表的创建与遍历
- 单向链表创建图解
- 链表创建和链表遍历
- 创建,查询,单向链表