单向链表创建与遍历
来源:互联网 发布:php新闻发布系统 编辑:程序博客网 时间:2024/05/29 17:24
单向链表的节点基本由2个元素组成——数据字段和指针,前者存储数据,后者指向下一个元素的内存所在地址。在C++中动态创建单向链表,一般先定义一个类,类中包含数据字段和指针,该指针的类型与此类相同,作用就是指向下一个链表节点。设ptr为链表的读取游标,创建链表节点的C++算法是:
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)指向NULLptr = ptr->Next; //将链表尾部的指针(Next)指向下一新元素}//遍历输出 cout << "输出链表内容为:" << 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;}
阅读全文
0 0
- 单向链表创建与遍历
- 单向链表的创建与遍历
- 单向链表的创建和遍历
- java实现单向链表--创建、遍历
- 单向链表的创建和遍历
- 单向链表建立与遍历
- 单向链表的创建与遍历(先进先出和先进后出)
- 创建和遍历单向线性链表(C)
- 单向链表的创建与打印
- 创建单向链表
- 单向链表创建
- 创建单向链表
- 单向链表-创建
- 单向链表的添加、删除与遍历
- 单向链表的创建与迭代访问
- 单向链表(一) 节点结构体、创建链表、释放链表、遍历链表
- 单向链表的相关操作(创建,遍历,插入,删除,逆置)
- C语言 单向链表的创建、遍历、排序、删除操作
- 生产者消费者模型
- 读者-写者问题(Reader-Writer Problem)
- 树莓派 Raspberry Pi 启用 root 登陆账户
- 设计模式再探索
- aop日志持久化+配置说明+aop持久化配置+aop重写测试+手动重写测试
- 单向链表创建与遍历
- JUC(Lock)和Monitor Object(Synchronized)机制区别是什么
- 【JavaSE笔记】Java常见细节性问题(三)_二维数组
- 发卡行机构代码表大全
- Invalid classpath publish/export dependency /common. Project entries not supported
- 一个或者多个textarea输入的验证剩余的字数
- Win32API学习笔记第一章
- [华为机试题]合唱队
- Toolbar