无聊的链表

  无聊写了下无头结点的链表,发现没有头结点想做一些插入/删除操作果然很困难...

#include <stdio.h>
#include <stdlib.h>

typedef struct NotHeadLinkList
{
    int data;
    struct NotHeadLinkList * next;
}NotHeadLinkList;

NotHeadLinkList * h, * t, * s = NULL;               // 头指针、尾指针

int main()
{
    int i , n , num;
    for(i = 0; i < 10; i++)                        //头插法,无头结点的链表
    {
        t = (NotHeadLinkList *)malloc(sizeof(NotHeadLinkList));
        t -> data = i + 1;
        t -> next = s;
        s = t;
    }

    while(t)
    {
        printf("%d ",t -> data);
        t = t -> next;
    }
    return 0;
}

  好像并没有什么实际作用。

时间: 2024-10-11 07:07:04

无聊的链表的相关文章

链表的逆置(无聊而写)

要求:就是建一个带一个头结点的链表,然后将链表逆置即可...主要就是讲插入方式变一下即可.. 代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<vector> #include<cmath> #include<string> #include<queue&

数据结构之线性表-链式存储之静态链表(二)

本人文笔较差,语文从来不及格,基础不好,写此类文章仅供自己学习,理解队列及其他知识,高手大神请略过.参考书籍 <数据结构与算法分析-Java语言描述>.<大话数据结构> 1.1 静态链表简介 用数组描述的链表叫静态链表.官方是这么给的定义.另一种描述方法叫游标实现法.先不管这些无聊的定义.先按我个人理解描述,再来个Java版的实现比较符合我的风格.另有一些树上说早期存在其他的高级语言没有对象,引用或者指针这样的东西,但是需要对于快插快删等批量操作的这种链式存储,这时候静态链表就起了

判断单向链表是否有环,环起点,环长,链表长

今天在微信上看到一篇介绍如何判断单向链表是否有环的文章,感觉很有意思,整理一下读后的思路. 一.判断单向链表是否有环 方法1:设置一个Hashset,顺序读取链表中的节点,判断Hashset中是否有该节点的唯一标识(ID).如果在Hashset中,说明有环:如果不在Hashset中,将节点的ID存入Hashset. 这种方法时间复杂度已经最优,但是因为额外申请了Hashset,所以空间复杂度不算最优. 方法2:设置2个指针,指向头节点.第1个指针每次指向下一个节点:第2个指针指向下一个节点的下一

两个有序链表合成一个有序链表

RT.... 无聊帮朋友撸个 C++ 作业.. = = 1 /* 2 无聊帮朋友撸个作业...... \ = v = / 3 4 两个有序链表合成为一个有序链表. 5 要求: 6 1. 每个链表元素里的值不超过int范围. 7 2. 两个链表要求为升序(从小到大). 8 9 10 2016.1.5 author : 加德满都的猫会爬树 11 12 */ 13 14 #include <iostream> 15 using namespace std; 16 const int MAX = 10

从二叉树改链表引发的递归二三想

递归其实就是寻找通项公式,但是通项公式可以有轻微的区别. 比如二叉树改链表(只调整箭头方向)这件事情,用以下两种方法都可以实现. 方法1: 从根开始 (1)调整左子树 (2)调整右子树  (3)(如何调整)左子树的最大值连接 自身,右子树的最小值连接自身 方法2:从根开始  (1)返回左子树最大值连接自身 (2)返回右子树最小值连接自身 (3)(如何返回值)如果是来自左子树,返回最大值,如果是来自右子树,返回最小值 (4)  递归调整左右子树 进而可以简化为 : (1)调整左子树,并返回最大值连

单链表的链式存储总结

基本数据结构之-单链表的链式存储 链表是一种插和删除元素很便捷的数据结构,原因是它存储的数据在内存中不连续,可以根据需要自己动态开辟. 和数组比较起来主要的缺点就是不能随机访问,如果是单链表,那么要访问一个数据,必须从头开始遍历一次! 对于基本数据结构围绕增删查改等操作,单链表的改可以通过删和增的结合来操作.因此就不用代码来表示了! 任何一个数据结构都有它的基本的数据结构,这儿给出一种用void *代替的写法 基本的数据结构的定义: // 定义指针的结构体 typedef struct _LIN

链表类的实现及其简单功能

今天C++老师让写了一个链表的类,其中要求弄一个节点类,表示深深的力不从心.晚上无聊的时候重新想了下这个问题,感觉还可以,就敲了下. 先分块介绍下: 节点类 class node//节点类 { public: double data; node *next; }; 链表类: class Link//:链表类 { public: Link()//构造函数 { pfront=NULL; pend=NULL; } double Getx(int n);//找出第n个数字 void add(double

链表的排序 (选择和冒泡)

无聊写了个单链表排序,不是很难.但是插入写起来很麻烦,都没有,本文全部是将链表中节点值互换,不改变结构,所以很容易写出来 #include<iostream> using namespace std; struct node { int n; struct node* next; }; //创建链表 void swap(int &a,int &b) { int c=a; a=b; b=c; } node* create(int a[],int len) { if(len==0)

STL list链表的用法详解(转)

本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂.不失为STL的入门文章,新手不容错过! 0 前言 1 定义一个list 2 使用list的成员函数push_back和push_front插入一个元素到list中 3 list的成员函数empty() 4 用for循环来处理list中的元素 5 用STL的通用算法for_each来处理list中的元素 6 用STL的通用算法count_if()来统计list中的元素个数 7 使用count_i