数据结构自己实现——Linklist
//单???链???表???
#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的更多相关文章
- 【数据结构】算法 LinkList (Remove Nth Node From End of List)
删除链表中倒数第n个节点 时间复杂度要控制在O(n)Solution:设置2个指针,一个用于确定删除节点的位置,一个用于计算倒数间距n.移动时保持2个指针同时移动. public ListNode r ...
- 【数据结构】算法 LinkList (Insertion Sort List 链表插入排序)
将一个单链表进行处理后,所得结果为一有序链表 Solution: 将原始链表逐个查询,插入新链表,在插入的同时对链表进行排序.时间复杂度O(n*n) public ListNode insertion ...
- 【数据结构】算法 LinkList (Add Two Numbers)
两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. Solution:建立一个新链表C,然 ...
- 【数据结构】算法 LinkList (Merge Two Sorted Lists)
合并2个有序链表 list A, list B, Solution: 对A,B 表按序读取数据,比较大小后插入新链表C. 由于两个输入链表的长度可能不同,所以最终会有一个链表先完成插入所有元素,则直接 ...
- 【数据结构】算法 LinkList (Reverse LinkedList) Java
反转链表,该链表为单链表. head 节点指向的是头节点. 最简单的方法,就是建一个新链表,将原来链表的节点一个个找到,并且使用头插法插入新链表.时间复杂度也就是O(n),空间复杂度就需要定义2个节点 ...
- Java中常见数据结构Map之LinkedHashMap
前面已经说完了HashMap, 接着来说下LinkedHashMap. 看到Linked就知道它是有序的Map,即插入顺序和取出顺序是一致的, 究竟是怎样做到的呢? 下面就一窥源码吧. 1, Link ...
- Java集合之LinkedHashMap
一.初识LinkedHashMap 上篇文章讲了HashMap.HashMap是一种非常常见.非常有用的集合,但在多线程情况下使用不当会有线程安全问题. 大多数情况下,只要不涉及线程安全问题,Map基 ...
- 图解集合6:LinkedHashMap
初识LinkedHashMap 上两篇文章讲了HashMap和HashMap在多线程下引发的问题,说明了,HashMap是一种非常常见.非常有用的集合,并且在多线程情况下使用不当会有线程安全问题. 大 ...
- 集合之LinkedHashMap(含JDK1.8源码分析)
一.前言 大多数的情况下,只要不涉及线程安全问题,map都可以使用hashMap,不过hashMap有一个问题,hashMap的迭代顺序不是hashMap的存储顺序,即hashMap中的元素是无序的. ...
随机推荐
- 【思维题 欧拉图】loj#10106. 单词游戏
巧妙的模型转化 题目描述 来自 ICPC CERC 1999/2000,有改动. 有 NNN 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词.你需要给这些盘子安排一个合适的顺序,使得相邻两个盘子 ...
- MHA
MHA 1. MHA简介 1.1 MHA工作原理总结为如下 1.2 MHA工具包介绍 2. 部署MHA 2.1 环境介绍 2.2 一主两从复制搭建 2.3 配置互信 2.4 下载MHA 2.5 安装M ...
- Inkscape基础
What is Inkscape A program for creating vector graphics For Windows, Mac OS, and Linux Open source F ...
- GoogleTest 之路1-Generic Build Instructions编译指导总方案
准备工作 为了在你的测试中使用GoogleTest, 你必须让你的编译系统 知道到哪里去寻找GoogleTest 的头文件和源文件. 具体的方法只能依赖于你具体使用的哪种编译系统了,一般来讲这个非常容 ...
- 学习路由器vue-router
vue-router:vue官方路由管理器. 功能:嵌套的路由/视图表模块化的.基于组件的路由配置路由参数.查询.通配符基于 Vue.js 过渡系统的视图过渡效果细粒度的导航控制带有自动激活的 CSS ...
- Python3 S.join() 个人笔记
S.join(iterable) S:需要的分隔符 iterable:被分割对象 . 注意括号里必须只能有一个成员,比如 ','.join('a','b') 这种写法是行不通的 实例:'-'.join ...
- hdu 5441
Travel Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- hdu 6354
Problem Description Edward is a worker for Aluminum Cyclic Machinery. His work is operating mechanic ...
- 计蒜客 The 2018 ACM-ICPC Chinese Collegiate Programming Contest Rolling The Polygon
include <iostream> #include <cstdio> #include <cstring> #include <string> #i ...
- (转)JVM各种内存溢出是否产生dump
对于java的内存溢出,如果配置-XX:+HeapDumpOnOutOfMemoryError,很明确的知道堆内存溢出时会生成dump文件.但永久代内存溢出不明确是否会生成,今天来做一个实验: 永久代 ...