*第四周*数据结构实践项目二【单链表算法库】

通过对于单链表的学习,我们开始建设自己的算法库,这个算法库包括初始化单链表函数、插入数据函数、销毁单链表函数。由于学习了多文件系统,为了让算法库更加简单明了,我采用了多文件系统的构建方式,将整个算法库分为头文件(包含函数、结构体声明以及包含库)以及自定义函数源文件


头文件如下:
/*

    Copyright (c) 2015,烟台大学计算机与控制工程学院
    All righs reserved
    文件名称:test.cpp
    作者: 李哲
    完成日期:2015年10月3日

    问题描述:建设单链表算法库
    程序说明:头文件代码


*/

#ifndef LINKLIST_H_INCLUDED
#define LINKLIST_H_INCLUDED

#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LinkList;

void InitList(LinkList*&L);
bool ListInsert(LinkList*&L,ElemType i,int e);
void DispList(LinkList*L);
void DestroyList(LinkList*&L);


#endif // LINKLIST_H_INCLUDED

自定义函数代码如下:

/*

    Copyright (c) 2015,烟台大学计算机与控制工程学院
    All righs reserved
    文件名称:test.cpp
    作者: 李哲
    完成日期:2015年10月3日

    问题描述:建设单链表算法库
    程序说明:自定义函数代码


*/

#include "linklist.h"
int main()
{
    LinkList *L;
    InitList(L);
    ListInsert(L, 1, 15);
    ListInsert(L, 1, 10);
    ListInsert(L, 1, 5);
    ListInsert(L, 1, 20);
    DispList(L);
    DestroyList(L);
    return 0;
}

void InitList(LinkList *&L)  //初始化链表,建立头节点
{
    L=(LinkList *)malloc(sizeof(LinkList )); //给头节点建立内存空间
    L->next=NULL;
}

bool ListInsert(LinkList *&L,int i,ElemType e)
{
    int j=0;
    LinkList *p=L,*s;

    while(j<i-1&&p!=NULL)
    {
        j++;
        p=p->next;
    }

    if(p==NULL)
    {
        return false;
    }
    else
    {
        s=(LinkList *)malloc(sizeof(LinkList ));

        s->data=e;
        s->next=p->next;
        p->next=s;

        return true;
    }

}

void DispList(LinkList *L)
{
    LinkList *p=L->next;

    while(p!=NULL)
    {
        printf("%d",p->data);
        printf(" ");
        p=p->next;
    }
    printf("\n");
}

void DestroyList(LinkList*&L)
{
    LinkList *p=L,*q=p->next;

    while(q!=NULL)
    {
        free(p);
        p=q;
        q=p->next;
    }
}

运行结果:
这里写图片描述

至此这个算法库还不算完整,还可以加入求链表长度、查找等功能。po主会在之后慢慢完善这个算法库。:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值