//单???链???表???
#include <iostream>
using namespace std; typedef char datatype;
typedef struct node{
datatype data;
struct node* next;
}listnode;
typedef listnode* linklist;
listnode *p; //建??立???链???表???
linklist createlist()
{
linklist head = (listnode*)malloc( sizeof(listnode));
listnode *p,*r;
r = head;
char ch;
while((ch=getchar())!='\n' )
{
p = (listnode*)malloc( sizeof(listnode));
if(p==NULL)
return NULL;
p->data = ch;
r->next = p;
r = p;
}
r->next = NULL;
return(head);
} //查??找??单???链???表???
linklist getnode(linklist head , int i)
{
int j;
listnode* p;
p = head;
j = ;
while(p->next && j<i)
{
p = p->next;
j++;
}
if(i==j)
return p;
else
return NULL;
} //打???印??输??出?链???表???内??容?Y
void printlist(linklist head)
{
listnode* p = head;
while(p->next)
{
cout<<p->next->data<<endl;
p = p->next;
}
}
//插?入??
void insertlist(linklist head,datatype m,int i)
{
listnode* p = getnode(head,i);
listnode* s = (listnode*)malloc( sizeof(listnode));
s->data = m;
if(p!=NULL)
{
s->next = p->next;
p->next = s;
}
}
//删??除y一??个?结??点??,删??除y第???i个?后??面?的??那?个?
void deletelistnode(linklist head,int i)
{
int j = ;
listnode *p,*r;
p = head;
while(p&&j<i)
{
p = p->next;
j++;
}
if(p==NULL)
exit(); r = p->next;
p->next = r->next;
free(r); }
int main()
{
linklist mylist = createlist();
// listnode * tmp = getnode(mylist,3);
//cout<<tmp->data<<endl;
//printlist(mylist);
//insertlist(mylist,'a',2);
//printlist(mylist);
deletelistnode(mylist,);
printlist(mylist);
return ;
}

数据结构自己实现——Linklist的更多相关文章

  1. 【数据结构】算法 LinkList (Remove Nth Node From End of List)

    删除链表中倒数第n个节点 时间复杂度要控制在O(n)Solution:设置2个指针,一个用于确定删除节点的位置,一个用于计算倒数间距n.移动时保持2个指针同时移动. public ListNode r ...

  2. 【数据结构】算法 LinkList (Insertion Sort List 链表插入排序)

    将一个单链表进行处理后,所得结果为一有序链表 Solution: 将原始链表逐个查询,插入新链表,在插入的同时对链表进行排序.时间复杂度O(n*n) public ListNode insertion ...

  3. 【数据结构】算法 LinkList (Add Two Numbers)

    两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. Solution:建立一个新链表C,然 ...

  4. 【数据结构】算法 LinkList (Merge Two Sorted Lists)

    合并2个有序链表 list A, list B, Solution: 对A,B 表按序读取数据,比较大小后插入新链表C. 由于两个输入链表的长度可能不同,所以最终会有一个链表先完成插入所有元素,则直接 ...

  5. 【数据结构】算法 LinkList (Reverse LinkedList) Java

    反转链表,该链表为单链表. head 节点指向的是头节点. 最简单的方法,就是建一个新链表,将原来链表的节点一个个找到,并且使用头插法插入新链表.时间复杂度也就是O(n),空间复杂度就需要定义2个节点 ...

  6. Java中常见数据结构Map之LinkedHashMap

    前面已经说完了HashMap, 接着来说下LinkedHashMap. 看到Linked就知道它是有序的Map,即插入顺序和取出顺序是一致的, 究竟是怎样做到的呢? 下面就一窥源码吧. 1, Link ...

  7. Java集合之LinkedHashMap

    一.初识LinkedHashMap 上篇文章讲了HashMap.HashMap是一种非常常见.非常有用的集合,但在多线程情况下使用不当会有线程安全问题. 大多数情况下,只要不涉及线程安全问题,Map基 ...

  8. 图解集合6:LinkedHashMap

    初识LinkedHashMap 上两篇文章讲了HashMap和HashMap在多线程下引发的问题,说明了,HashMap是一种非常常见.非常有用的集合,并且在多线程情况下使用不当会有线程安全问题. 大 ...

  9. 集合之LinkedHashMap(含JDK1.8源码分析)

    一.前言 大多数的情况下,只要不涉及线程安全问题,map都可以使用hashMap,不过hashMap有一个问题,hashMap的迭代顺序不是hashMap的存储顺序,即hashMap中的元素是无序的. ...

随机推荐

  1. 【Mysql】Mysql主从库搭建过程(爬完坑后整理所得)

    Mysql主从数据库搭建流程 新手开始学习mysql主从库,遇到一些问题,总结后写出以下流程 下面以5.7.23版本为例介绍 第一步:去官网下载5.7.23版本的免安装压缩包形式的mysql文件,贴上 ...

  2. linux文件属性文文件类型知识

    文件类型分别介绍: 1.普通文件:我们通过用ls  -l来查看xxx.sql的属性,可以看到第一列内容为-rw-r--r--,值得注意的是第一个符号是-(英文字符减号),在Linux中,以这样的字符开 ...

  3. thinkcmf5增加微信管理app笔记

    simplewind/extend/目录下增加 EasyWeChat Monolog   //是PHP的一个日志类库  https://segmentfault.com/a/1190000002775 ...

  4. 【js】window.onscroll 无效问题

    body 设置为height:100% 导致window.onscroll 无效

  5. Git for Windows 工具的使用(一)

    如果你还不知道什么是Git,只知道GitHub,但是还不会用,我想这个教程会帮助你. 前言 鉴于网上目前的教材都太落后,GitHub for Windows已经更新了多个版本,好多界面都发生了变化,所 ...

  6. ubuntu12.04 ppa安装pidgin

    sudo apt-get update sudo apt-get dist-upgrade sudo add-apt-repository  ppa:pidgin-developers/ppa按下回车 ...

  7. python基础学习笔记——反射

    对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述pyth ...

  8. hexo博客发布注意事项

    最近把hexo博客内容写完了,就发布到github上面去,结果就出现各种一些小问题. 1.发布之后,hexo博客的css与js无法访问. 原因:没有配置正确的url路径.(配置文件_config.ym ...

  9. LiveScript 操作符

    The LiveScript Book     The LiveScript Book 操作符 数字 标准的数学操作符: 1.1 + 2 # => 32.3 - 4 # => -13.6 ...

  10. [python学习篇][python工具使用篇][1] 编辑,设置等

    1 添加sublime到环境变量 win +r ,输入sysdm.cpl, 在弹出的界面选择高级,选择环境变量,编辑path,添加sublime的安装目录(这是sublime的一种安装方式,另外一种安 ...