反转链表.
解答:
首先要明白链表相关的几个基本的概念.
链表: (Linked list ) - 由几个单个结点线性连接起来的数据结构。包括 表头指针(head) ,当前指针(curPtr), 表尾指针(rear) , 表尾结点(值为NULL)
结点: ( Node ) - 包括数据域和指针域(指向下一个结点 )
#include <iostream>
using namespace std;
//定义链表的结点结构
struct Node{
int data;
Node *next;
};
//定义链表类.
class linkedList {
Node *head; // 头指针
Node *rear; //尾指针
public:
linkedList(); // 构造函数,初始化.
void insert(int iData) ; //在表头插入数据.
void append(int iData) ; //在表尾添加数据.
void reverse(); //反转链表.
void output(); //输出.
};
linkedList::linkedList(){
head = NULL;
rear = head;
}
void linkedList::append(int iData){
Node *tmpNode;
tmpNode = (Node *)new(Node); // 新建一个结点.
tmpNode->data = iData;
tmpNode->next = NULL;
if(NULL==head){ //空表,表头直接指向新结点
head = tmpNode;
rear = head;
}else{ //在表尾添加结点
rear->next = tmpNode;
rear = tmpNode;
}
}
void linkedList::reverse(){
// 设置3个结点指针, preNode ,curNode, nextNode.
Node *preNode,*curNode,*nextNode;
if (NULL==head){
return;
};
// 遍历链表,翻转指针域。
preNode = head;
curNode = head->next;
while(curNode!=NULL){
nextNode = curNode->next;
curNode->next = preNode; //指向前一个指针。
//移动到下两个结点
preNode = curNode;
curNode = nextNode;
}
head->next = NULL;
head = preNode;
}
void linkedList::output(){
Node *curNode;
curNode = head;
if (NULL==curNode){ //空表
cout<<"void linkedList!";
return;
}
do {
cout<<curNode->data<<","; //单结点输出.
curNode=curNode->next;
}while(curNode!=NULL);
}
int main(){
linkedList mList;
int a[8]={1,2,3,4,5,6,7,8};
for (int i=0;i<8;i++){
mList.append(a[i]);
};
mList.output();
mList.reverse();
mList.output();
getchar();
return 0;
}
分享到:
相关推荐
409页C++练习题,涵盖了入门习题,提高习题,同时也包含了大量基础算法及一些链表、队列等算法习题,方便在入门C++的同时,对一些算法进行了解。
在学习到c++版的数据结构理论后适当做些练习题,可以巩固复习已经学完的知识结构.
c++经典练习题,包含链表,队列,栈等知识和一些常用算法
单链表的删除 ,插入。删除具体数。删除非递减有序数列的相同元素。
这个完全符合课本上习题的要求,我作业交的就是这个,我自己还在里面做了详细的注释
从键盘输入一组整型元素序列,建立链表。要求输入元素递增,如果不递增提示重新输入刚才错误的数据。 实现该链表的遍历。 在该链表中进行顺序查找某一元素,查找成功返回1,否则返回0。 把元素x插入递增有序表中,...
数据结构中对链表的创建和遍历,采用c进行实现,通过该部分学习可以加深对链表和指针的学习,同时对c的应用可以更加深刻。
C++程序设计复习(1)算法 (1)遍历 题目:创建单向链表,并输出单向链表所有结点的值; #include #include using namespace std; struct Name { char name[20]; Name* next; }; Name * head; Name * ...
整理的一些关于C语言的练习题,题目答案都有,需要的可以下载看一下
1. 逆序建立单链表 思想: 建立单链表的过程要求动态生成节点,从“空表”的初始状态起,依次建立各节点,并逐个插入单链表。
大学课本习题源程序 void main() {double a,b,c,p,x1,x2; cout,b,c:"; cin>>a>>b>>c; p=-b/(2*a); try {x1=p+q(a,b,c); x2=p-q(a,b,c); cout; } catch(double d) {cout,b=",c="<<c,disc=",error!";} cout...
,数据结构习题 顺序表 单链表 顺序栈,题目的添加删除程序运行的结果
常见数据结构C++解题(leetCode)及随笔练习分析(牛客) 关于LeetCode中的题,Repo中的pdf都有解析。真的非常好的资料,感谢这么多大佬给总结精华新手一定要仔细看呦 链表 最近在看侯捷专家的STL源码分析,恰好有讲到...
LeetCode练习 /tree: 有关树(包括二叉树,二叉搜索树等)的题解, C++实现 /java: 使用Java编写的一些解题代码, 涉及到的题目有部分和C++重复 LeetCodeEx:杂七杂八的,暂时没有分类的题解 LeetCodeTree:有关树(包括...
java初级开发者面试笔试题cpp-实践 这个存储库包含一些我发现有趣的编码问题的解决方案。 解决方案是用 C++ 编写的,并依赖于单元测试和构建(Meson 生产忍者构建抵押品)。 我试图遵循严格的测试驱动开发方法来解决...
C语言链表的入门题,里面提供了两种思路供参考,用链表来实现一元多项式的加减法,并按照一定规律输出。也是练习链表和排序算法的一道小实验,初学链表的小伙伴可以参考参考噢
在计算机科学发展过程中,早期数据结构教材大都采用PASCAL语言为描述工具,后来出现了采用C语言为描述工具的教材版本、至今又出现了采用C++语言为描述工具的多种教材版本。本教实验指导书是为已经学习过C++语言的...
2、C语言逻辑算法练习题; 3、C语言函数、指针;C语言结构; 4、C语言链表结构等。 无论您是在校大学生,还是职业学员,或者其他开发人员,本书都志在全面提高您的C语言编程思想和开发实力,使您能够系统的学习C语言...
P192.2.5 表达式:如何使用PAT系统来做编程练习题 P203.0.1 编程练习解析:PAT再解释 P213.0.1 编程练习解析:第二周习题解析 P223.0.3 编程练习解析:0的故事 P233.1 判断:判断的条件 P243.1.1 判断:做判断 P253....
数据结构与算法课程内容包括数据结构与抽象数据类型、算法特性及分类、算法效率与度量、线性结构、顺序表、链表、栈与队列、栈与递归、递归转非递归、字符串的存储结构、字符串运算的算法实现、字符串的快速模式匹配...