/*
* @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的结点数,单链表的逆置的更多相关文章

  1. 单链表在不知头结点的情况下对第i个元素的删除

    一.首先,看看单链表中第i个元素的删除: Status ListDelete_L (LinkList &L,int i,ElemType &e){ //在带头结点的单链表L中,删除第i ...

  2. 建立链表的虚拟头结点 203 Remove Linked List Element,82,147,148,237

    该逻辑对于删除第一个元素不适用. 这样的代码不优美 /** * Definition for singly-linked list. * struct ListNode { * int val; * ...

  3. [Leetcode] Remove duplicate from sorted list ii 从已排序的链表中删除重复结点

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  4. 在单链表和双链表中删除倒数第k个结点

    题目: 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 要求: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 解答: 让链表从头 ...

  5. 《Java数据结构与算法》笔记-CH5-链表-2单链表,增加根据关键字查找和删除

    /** * Link节点 有数据项和next指向下一个Link引用 */ class Link { private int iData;// 数据 private double dData;// 数据 ...

  6. 剑指offer56:删除链表中重复的结点,排序的链表中,删除重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

    1 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处 ...

  7. 左神算法书籍《程序员代码面试指南》——2_02在单链表和双链表中删除倒数第k个字节

    [题目]分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点.[要求]如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1).[题解]从头遍历链表, ...

  8. 《剑指offer》第十八题(删除链表中重复的结点)

    // 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include &l ...

  9. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点

    题目 在单链表和双链表中删除倒数第K个节点 java代码 /** * @Description:在单链表和双链表中删除倒数第K个节点 * @Author: lizhouwei * @CreateDat ...

  10. 删除链表中重复的结点——牛客剑指offer

    题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理 ...

随机推荐

  1. Codeforces Round 920 (Div. 3)(A~F)

    目录 A B C D E F A 按题意模拟即可 #include <bits/stdc++.h> #define int long long #define rep(i,a,b) for ...

  2. 音频编解码aac移植之ubuntu下aac的仿真的编译和运行

    一 编译 aac的编译其实很简单,配置好预编译选项之后,立即在根目录下执行:make 即可. 第一步:./configure 第二步: make 第三步: sudo make install 二 运行 ...

  3. Ubuntu 14.04 升级到Gnome3.12z的折腾之旅(警示后来者)+推荐Extensions.-------(二)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文发布于 2014-12-22 15:33:35 ...

  4. PAT 甲级【1009 Product of Polynomials】

    /* 系数为0不输出 貌似runtime异常也显示答案不正确*/ import java.io.BufferedReader; import java.io.IOException; import j ...

  5. Windows下写脚本无法运行在linux上?怎麽办?

    Windows下写脚本无法运行在linux上?怎麽办? $'\r': command not found的解决方法 在Linux系统中,运行Shell脚本,出现了如下错误: one-more.sh: ...

  6. 一道题开始认识Symbol

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近每天学习的时候,发现了一道很有趣的面试题 1.const [a, b] = { a: 100, b: 200 } 2.console. ...

  7. 从静态到动态化,Python数据可视化中的Matplotlib和Seaborn

    本文分享自华为云社区<Python数据可视化大揭秘:Matplotlib和Seaborn高效应用指南>,作者: 柠檬味拥抱. 安装Matplotlib和Seaborn 首先,确保你已经安装 ...

  8. AntvG6-graph图谱工具

    1 快速上手 1.1 在项目中使用 npm 包引入 Step 1: 使用命令行在项目目录下执行以下命令 npm install --save @antv/g6 Step 2: 在需要用的 G6 的 J ...

  9. nginx 自定义日志格式输出

    修改 nginx.conf 自定义日志格式.路径 log_format my_format '$remote_addr $msec $http_host $request_uri'; 使用精准配准,对 ...

  10. spring redis 工具类

    import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; ...