单链表之删除头结点,查找等于定值x的结点数,单链表的逆置
/*
* @Author: 一届书生
* @Date: 2020-03-08 09:52:27
* @LastEditTime: 2020-03-08 13:58:30
*/
#include <iostream>
using namespace std;
#define elemType char typedef struct node
{
elemType data;
struct node *next;
} Lnode, *Pnode; // 带头结点-尾插法
Pnode create1()
{
Pnode head, tail, p; //头结点 尾结点 临时结点
elemType i;
head = new node; //申请头结点
tail = head; //头尾指针指向同一个结点
while ((cin >> i) && (i != '*'))
{
p = new node; //申请新结点
p->data = i; //输入结点的数据域
tail->next = p; //将新结点插入链表尾部
tail = p; //让链表的尾结点指向新结点
}
tail->next = NULL; //尾指针指向空
return head;
}; // 带头结点-头插法
Pnode create2()
{
Pnode head, p; //头结点 尾结点 临时结点
head = new node;
head->next = NULL;
elemType x;
while (cin >> x)
{
p = new node;
p->data = x;
p->next = head->next;
head->next = p;
}
return head;
}; // 删除头结点
Pnode deletHeadNode(Pnode &a)
{
if (a == NULL)
{
cout << "空表" << endl;
return a;
}
Pnode t = a;
a = a->next;
t->next = NULL;
free(t);
return a;
} // 添加头结点
Pnode addHeadNode(Pnode &p){
Pnode head;
head=new node;
head->next=p;
return head;
} // 统计出带头单链表中结点的值等于给定值X的结点数
int getNumX(Pnode a,elemType x){
int cnt=0;
a=a->next;
while(a){
if(a->data==x)
cnt++;
a=a->next;
}
return cnt;
} // 单链表逆置 头插法
void reverse(Pnode &head) {
Pnode t,p,q=head->next;
p=q->next;
q->next=NULL;
while(p){
t=p->next;
p->next=q;
q=p;
p=t;
}
head->next=q;
} // 带头结点遍历输出
void display(Pnode head){ //输出链表中的数据
Pnode p;
p = head->next;
while (p != NULL){
cout<< p->data;
if (p->next != NULL)
cout<<' ';
p = p->next; //p指向下一个结点
}
cout<<endl;
} int main()
{
// 样例:123456789111
Pnode p;
p = create1();
display(p); // 带头结点遍历输出
// 输出:1 2 3 4 5 6 7 8 9 1 1 1 p = deletHeadNode(p);
display(p); // 查看是否已经删除了头结点,若成功删除的话,应该从第二个结点开始输出
// 输出:2 3 4 5 6 7 8 9 1 1 1 p=addHeadNode(p);
display(p); //加上头结点后,再遍历一遍看看结果
// 输出:1 2 3 4 5 6 7 8 9 1 1 1 elemType t='1';
cout<<getNumX(p,t)<<endl; //单链表:123456789111 输出:4 reverse(p);
display(p); // 输出:1 1 1 9 8 7 6 5 4 3 2 1 return 0;
}
单链表之删除头结点,查找等于定值x的结点数,单链表的逆置的更多相关文章
- 单链表在不知头结点的情况下对第i个元素的删除
一.首先,看看单链表中第i个元素的删除: Status ListDelete_L (LinkList &L,int i,ElemType &e){ //在带头结点的单链表L中,删除第i ...
- 建立链表的虚拟头结点 203 Remove Linked List Element,82,147,148,237
该逻辑对于删除第一个元素不适用. 这样的代码不优美 /** * Definition for singly-linked list. * struct ListNode { * int val; * ...
- [Leetcode] Remove duplicate from sorted list ii 从已排序的链表中删除重复结点
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...
- 在单链表和双链表中删除倒数第k个结点
题目: 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 要求: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 解答: 让链表从头 ...
- 《Java数据结构与算法》笔记-CH5-链表-2单链表,增加根据关键字查找和删除
/** * Link节点 有数据项和next指向下一个Link引用 */ class Link { private int iData;// 数据 private double dData;// 数据 ...
- 剑指offer56:删除链表中重复的结点,排序的链表中,删除重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
1 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处 ...
- 左神算法书籍《程序员代码面试指南》——2_02在单链表和双链表中删除倒数第k个字节
[题目]分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点.[要求]如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1).[题解]从头遍历链表, ...
- 《剑指offer》第十八题(删除链表中重复的结点)
// 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include &l ...
- 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点
题目 在单链表和双链表中删除倒数第K个节点 java代码 /** * @Description:在单链表和双链表中删除倒数第K个节点 * @Author: lizhouwei * @CreateDat ...
- 删除链表中重复的结点——牛客剑指offer
题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理 ...
随机推荐
- MySQL---面经
如果想要对 MySQL 的索引树有更深入的了解,掘金的小册子:<MySQL 是怎样运行的> MySQL 是怎样运行的 以下是常见面试题 MySQL日志 MySQL日志系统 redo_log ...
- 摆脱鼠标系列 - vscode 上一个编辑器 下一个编辑器 Ctrl + h Ctrl + l
摆脱鼠标系列 - vscode 上一个编辑器 下一个编辑器 Ctrl + H Ctrl + L 为什么 根据 hjkl h是左边的原则 h 左移一位 b 左移一个单词 H 移动到句首 0 是行首 I是 ...
- ARM的无线ble IP Cordio-B50 stack and profiles简析
一 简介 人家英文写的很清楚,我就不蹩脚额翻译了. Cordio-B50 stack is designed specifically for Bluetooth low energy single- ...
- 将Maven和Plugins的源都改为阿里镜像的Setting.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...
- java生产者消费者模式代码示例
package test; import java.util.LinkedList; public class Test { public static void main(String[] args ...
- 关于linux在笔记本下耗电的解决方案(只写我实践的部分)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文发布于 2014-09-22 12:02:54 ...
- Performance Improvements in .NET 8 -- JIT部分翻译
相关视频 动态PGO 基准测试设置 在本文中,我包括微基准测试以突出讨论的各个方面.其中大部分基准测试都是使用BenchmarkDotNet v0.13.8实现的,除非另有说明,否则每个基准测试都有一 ...
- 鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
一.RelativeContainer 1.概述 ArkUI组件中的RelativeContainer是一个相对定位的容器,可以用来将子组件按照相对位置布局. 在RelativeContainer中, ...
- UE4中的GamePlay模块
链接 该文档主要通过学习自己构建文件,形成GamePlay模块.下图是利用引擎创建的一个空模板C++代码结构 简要流程 UBT 虚幻编译工具(UBT:Unreal Build Tool)是一个自定义工 ...
- Chrome浏览器使用小技巧
前言 Notes made by IT-Pupil-Poo-Poo-Cai(IT小学生蔡坨坨). The notes are for reference only. Personal blog:www ...