#include<stdio.h>
#include<stdlib.h>int typeOfLinkList;typedef struct LNode{int data;struct LNode *next;
}LNode, *LinkList;/* 基本算法(遍历) */
void show(LNode *L)
{printf("  Show: ");do{printf("%d - ", L->data);L = L->next;}while(L != NULL);printf("\n");
}/* 基本算法(查找) 返回节点*/
LNode* find1(LinkList L, int x)
{int index;do{if(x == L->data)return L;elseL = L->next;}while(L != NULL);return NULL;
}
/* 基本算法(查找) 返回索引号*/
int find2(LinkList L, int x)
{int index = 0;do{if(x == L->data)return index;elseL = L->next;index ++;}while(L != NULL);return 9999;
}
/* 基本算法(插入) */
void insert(LinkList L, int index, int x)
{printf("insert: ");int i = 0;for(i=0;i<index-1&&(L) != NULL; i++, L=(L)->next)//找到要插入的位置{printf("%d - ",(L)->data);}LNode *node = (LNode*)malloc(sizeof(LNode));//新建节点node->data = x;//赋值 node->next = (L)->next;//新节点next替换掉next(L)->next = node;//next重新指向新节点printf("\n");
}
/* 基本算法(删除) */
void Delete(LinkList L, int index)
{int i;for(i=0;i<index-1&&L != NULL;i++,L=L->next);L->next=L->next->next;//隔过去一个节点
}/* 基本算法(逆序建表) */
LinkList CreatLinkList1(int *a)
{LinkList L = (LNode*)malloc(sizeof(LNode));//申请一个链表头(空头)L->data = a[0];//给这个表头赋值L->next = NULL;//next指向NULLint i = 1;//新建节点LNode *node;while(a[i] != 0){node = (LNode*)malloc(sizeof(LNode));//给节点分配空间node->data = a[i];//给节点赋值node->next = L;//新节点替换掉表头L = node;//表头重新作为表头,指向新增表头节点node = NULL;i++;}return L;
}
/* 基本算法(顺序建表) */
LinkList CreatLinkList2(int *a)
{LinkList L = (LNode*)malloc(sizeof(LNode));//申请一个链表头(空头)L->next = NULL;//next指向NULLLNode *p = L;//让p指向这个链表头p->data = a[0];//给这个表头赋值int i = 1;LNode *node;//新建节点while(a[i] != 0){node = (LNode*)malloc(sizeof(LNode));//给节点分配空间node->data = a[i];//给节点赋值node->next = NULL;//新节点指向空p->next = node;//表头(尾)指向新节点p = node;//表头(尾)指向新的表尾i++;}return L;
}
int main(int argc, char*argv[])
{int a[11] = {1,1,2,3,4,5,6,7,8,9,0};LinkList L = CreatLinkList2(a);show(L);printf("  find: %d\n",find1(L, 6)->data);printf("  find: %d\n",find2(L, 16));show(L);insert(L, 6, 15);show(L);Delete(L, 7);show(L);return 0;
}

当采用顺序建立链表时,结果为:

G:\algorithmsDataStructures\study1>a.exeShow: 1 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 -find: 6find: 9999Show: 1 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 -
insert: 1 - 1 - 2 - 3 - 4 -Show: 1 - 1 - 2 - 3 - 4 - 5 - 15 - 6 - 7 - 8 - 9 -Show: 1 - 1 - 2 - 3 - 4 - 5 - 15 - 7 - 8 - 9 -

当采用逆序建立链表时,结果为:

G:\algorithmsDataStructures\study1>a.exeShow: 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 1 -find: 6find: 9999Show: 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 1 -
insert: 9 - 8 - 7 - 6 - 5 -Show: 9 - 8 - 7 - 6 - 5 - 4 - 15 - 3 - 2 - 1 - 1 -Show: 9 - 8 - 7 - 6 - 5 - 4 - 15 - 2 - 1 - 1 -

C语言线性表之单链表相关推荐

  1. 线性表11|单链表小结:腾讯面试题 - 数据结构和算法16

    线性表11|单链表小结:腾讯面试题 让编程改变世界 Change the world by program 静态链表的删除操作 我们的故事还没结束,小C看到小A和2B这样非法的勾当,内心觉得很不爽,一 ...

  2. C++线性表(单链表)的应用算法(附源码)

    C++线性表(单链表)的应用算法 线性表(单链表)的应用算法: 构造一个递增有序的正整数链表,实现链表分解为一个奇数表和一个偶数表,之后再将两个链表合并一个递减链表. 运行截图 代码实现 /* 线性表 ...

  3. c语言判断顺序链表是否为空,数据结构之线性表(五)——单链表(2 初始化,判断空表,销毁,清空,求表长)...

    1.单链表(带头结点)的初始化 即,构造一个空表,如下图, 算法步骤: 1.生成新结点作头结点,用头指针L指向头结点. 2.将头指针的指针域置空. 算法描述: Status InitList_L(Li ...

  4. java单链表输出_数据结构基础------1.线性表之单链表的创建与输出方法(Java版)...

    基础知识: 线性表(linear list),是其组成元素间具有线性关系的一种线性结构. 线性表有 ①顺序存储结构(sequential storage structure) 顺序存储结构可以简单的理 ...

  5. 单链表删除所有值为x的元素_线性表之单链表

    单链表 一种以链接方式存储的线性表,适用于频繁增删操作,存储空间不定的情形. 单链表的一个存储结点包含两个域,数据域和指针域.数据域用于存储线性表的一个数据元素,指针域用于指示下一个结点开始的存储地址 ...

  6. 数据结构-线性表之单链表

    文章目录 一:相关概念 (1)什么是链表 (2)链表的优点和缺点 (3)链表的分类 二:实践 (1)准备工作 (2)结构体定义 (3)操作 A:创造头结点(初始化) ①:头结点?头指针? ②:初始化 ...

  7. 线性表之单链表 图解和代码实现

    线性表的链接存储结构---单链表 图解: LinkList.h文件 //LinkList.h 声明类LinkList #ifndef LinkList_H #define LinkList_H tem ...

  8. 卜若的代码笔记-数据结构系列-第三章:链表-最简单的线性表:单链表

    1.一个最简单的线性表 1.1单链表的特征: a.链表无法通过索引获取链表元素,只能从头开始一个一个的后继去找. b.链表无法找到父节点 1.2结构: 1.3 实现 我们来讨论一下它的时间复杂度: 1 ...

  9. 线性表之单链表基本操作

    单链表的定义 线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素.为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需要存放一个指向其后继的指针. ...

最新文章

  1. 观峰雨个人空间 2010 STOCK ADVICE !
  2. Codeforces 337D Book of Evil:树的直径【结论】
  3. 从理论到实践,机器人SLAM技术详解
  4. ASP.NET Web Api 实现数据的分页
  5. Python小数据池,代码块
  6. 女性开车5大安全驾车好习惯 为您支招
  7. 耗时又繁重的SQL诊断优化,以后就都交给数据库自治服务DAS吧!
  8. SAP License:SAP IDES 4.71的安装补充
  9. PC端编辑 但能在PC端模拟移动端预览的富文本编辑器
  10. python练习题及答案-python装饰器练习题及答案
  11. Android 经常使用设计模式(一)
  12. Nutch第一次搭建部署总结
  13. 苹果笔记本风扇测试软件,实用的mac电脑风扇控制软件 Macs Fan Control Pro
  14. android app跳转到微信
  15. RTMP(2):Chunk 和 Message
  16. CC00024.CloudOpenStack——|OpenStack组件.V02|——|OpenStack-Cinder块存储|配置block.V2|
  17. win7修复计算机无鼠标,win7电脑鼠标不听使唤反应慢如何修复
  18. 计数排序:时间复杂度仅为 O(n) 的排序算法
  19. 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、二十四节气)...
  20. (转)为Linux服务器部署高效防毒软件

热门文章

  1. synchronized关键字实现同步
  2. AES-加密解密工具类
  3. Directx11教程39 纹理映射(9)
  4. BZOJ1509: [NOI2003]逃学的小孩
  5. 17.3.13--python编码问题
  6. JavaScript实现MVVM之我就是想监测一个普通对象的变化
  7. [教程]centos下设置网卡
  8. Android2.2缩略图类ThumbnailUtils
  9. window 下的mysql_Window下mysql的安装
  10. c 输出空格_C/C++知识分享:C++常用内置函数你会几个,使用过几次呢?