链表的实现示例

线性表的链式实现例子

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

#include "ds.h"     

#define ElemType int                 //数据元素的类型
Status print(ElemType e);            // 打印数据元素的方法
bool equal(ElemType a, ElemType b);  //比较两个元素相等的方法      

#include "linklist.h"     

//打印链表内容
void PrintLinkList(LinkList L);     

int main()
{
    LinkList L;     

    //1)初始化链表
    InitList(L);     

    //2)插入一些元素: 12,23,34,45
    ListInsert(L,1,12);
    ListInsert(L,1,23);
    ListInsert(L,1,34);
    ListInsert(L,1,45);     

    //3)打印链表信息
    printf("\n开始时链表内容\n");
    PrintLinkList(L);
    printf("ListLength(L) : %d\n", ListLength(L));
    printf("ListEmpty(L)  : %d\n", ListEmpty(L));     

    //4)链表插入
    printf("\n请输入一个元素:");
    ElemType x;
    read(x);
    printf("插入开头:");
    ListInsert(L,1,x);
    PrintLinkList(L);
    printf("插入末尾:");
    ListInsert(L,ListLength(L)+1,x);
    PrintLinkList(L);     

    //5)链表删除
    printf("\n请选择删除第i(1..%d)个元素:", ListLength(L));
    int i;
    read(i);
    ElemType e;
    if ( ListDelete(L,i,e)==OK ) {
        Status print(ElemType e);  //声明print(e)函数      

        printf("删除"); print(e);
        printf("成功\n");
    } else
        printf("删除失败.\n");
    printf("链表内容:");
    PrintLinkList(L);     

    //6)元素定位
    printf("\n请输入一个元素以便定位:");
    read(x);
    i = LocateElem(L,x);
    if ( i!=0 ) {
        printf("该元素是表中的第%d个元素.\n",i);
    } else
        printf("该元素在表中不存在.\n");      

    //7)清空链表
    ClearList(L);
    printf("\n最后链表内容\n");
    PrintLinkList(L);
    printf("ListLength(L) : %d\n", ListLength(L));
    printf("ListEmpty(L)  : %d\n", ListEmpty(L));     

    //8)销毁链表
    DestroyList(L);     

    system("PAUSE");
    return 0;
}     

// 打印数据元素的方法
Status print(ElemType e)
{
    printf("%5d",e);
    return OK;
}     

//比较两个元素相等的方法
bool equal(ElemType a, ElemType b)
{
    return a==b;
}     

//打印链表内容
void PrintLinkList(LinkList L)
{
    ListTraverse(L,print); //遍历链表并print()每个元素
    printf("\n");
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索链表
, printf
, include
, 内容
, 十字链表
, 链表查询
, 链表插入
, printf+
, 元素
, print
, 链表 初始化
L方法
链表的实现、c语言单向链表的实现、链表的游标实现、java单链表的实现、栈的链表实现,以便于您获取更多的相关知识。

时间: 2024-09-20 18:15:32

链表的实现示例的相关文章

PHP中模拟链表和链表的基本操作示例_php实例

模拟链表: <?php /** * PHP实现链表的基本操作 */ class linkList { /** * 姓名 * @var string */ public $name = ''; /** * 编号 * @var int */ public $id = 0; /* * 引用下一个对象 */ public $next = null; /** * 构造函数初始化数据 * @param int $id * @param string $name */ public function __co

PHP链表操作简单示例_php技巧

本文实例讲述了PHP链表操作.分享给大家供大家参考,具体如下: 在php中运行数据结构,基本都是用数组模拟的,只是用一直思想而已. 今天遇到的这个问题是,两个链表进行合并. 链表合并效果图 问题描述:A链表是模版链表,B链表的长度不确定,A,B二个链表结合后形成C链表. 说一下编程思想:A链表是模版链表所以在运算完成了,长度了唯一不变的.而B链表的长度是不确定的.所以可以先对B链表进行判断,分了三步: B链表是不是为空 B链表是不是比A链表短或者相等 B链表是不是比A链表长 编程就是要列出尽可能

Java模拟有序链表数据结构的示例_java

有序链表:按关键值排序.删除链头时,就删除最小(/最大)的值,插入时,搜索插入的位置. 插入时需要比较O(N),平均O(N/2),删除最小(/最大)的在链头的数据时效率为O(1), 如果一个应用需要频繁的存取(插入/查找/删除)最小(/最大)的数据项,那么有序链表是一个不错的选择 优先级队列 可以使用有序链表来实现 有序链表的插入排序: 对一个无序数组,用有序链表来排序,比较的时间级还是O(N^2) 复制时间级为O(2*N),因为复制的次数较少,第一次放进链表数据移动N次,再从链表复制到数组,又

java使用数组和链表实现队列示例_java

(1)用数组实现的队列: 复制代码 代码如下:   //先自己定义一个接口  public interface NetJavaList {    public void add(Student t);    //继承该接口的类必须实现的方法    public Student get(int index);//队列的加入,取出,队列的大小    public int size();  }  定义一个学生类 复制代码 代码如下: class Student {      private Strin

单链表(二):如何实现单链表的排序、逆置(逆序)

1.单链表的排序 示例代码如下: #include<iostream> using namespace std; ///单链表结构体:结点 typedef struct student { int data; //结点中的数据 struct student *next; //指向链表下一个结点的指针 }node; node *head; //头结点指针 int index; //链表长度 ///建立单链表 void *create() { node *p,*s; //增加结点的位置指针.要增加

C语言创建和操作单链表数据结构的实例教程_C 语言

1,为什么要用到链表 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性.但数组也同样存在一些弊病.如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个数组的大小,难于统一.我们只能够根据可能的最大需求来定义数组,常常会造成一定存储空间的浪费. 我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要.链表就是我们需要的动态数组.它是在程序的执行过程中根据需要有数据存储就向系统要求

二叉树的存储方式以及递归和非递归的三种遍历方式

树的定义和基本术语 树(Tree)是n(n>=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:   (1)有且仅有一个特定的称为根(Root)的结点:   (2)其余的结点可分为m(m>=0)个互不相交的子集T1,T2,T3-Tm,其中每个子集又是一棵树,并称其为子树(Subtree). 树形结构应用实例: 1.日常生活:家族谱.行政组织结构:书的目录 2.计算机:资源管理器的文件夹:     编译程序:用树表示源程序的语法结构:     数据库系统:用树组织信息:     分

C语言及程序设计[套餐]课程主页

课程链接:http://edu.csdn.net/combo/detail/30,提供所有的视频和课件下载. 三部分的课程主页,提供了为每一课时配套的自测.示例下载,以及程序阅读.程序填空.实践项目.参考解答等.这是本课最具价值的部分,是保证学习效果的根本保证.请在看视频基础上,完成相关的实践. 这三部分的课程主页的链接分别是:[初步篇].[提高篇].[进阶篇] 本课QQ交流群:528582245 学员列表:高 强 本  马莱(马荣超) 邓帅 杨婕 王琨   刘亦鑫  Frank  金叶  刘树

C语言及程序设计基础 课程主页

关于本课 本课基于迂者在CSDN学院建设的在线课程,为与本职工作相关的人群提供的限期免费课程.视频和课件在专用平台发布,本课程主页提供相关的实践资源. 第1个免费访问期限为2015年7月至2016年2月.2016年2月将向相关人员提供第2个期限的访问方法. 本课与CSDN学院商业版课程的区别在本文最后. 学习流程建议:1.看视频:2.(可选)看讲义:3.做自测:4.(可选)调试课堂示例:5.做程序阅读题:6.做实践项目:7.(强烈建议)在CSDN的博客公开你的实践成果. 祝学习顺利!敬请提出建议