第4周项目2 建设“单链表”算法库

问题及代码:

/*文件名称:main.cpp linklist.h linklist.cpp
 *作者:郑孚嘉
 *问题描述:
 算法库包括两个文件:
 头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明;
 源文件:linklist.cpp,包含实现各种算法的函数的定义
 请采用程序的多文件组织形式,建立如上的两个文件,另外再建立一个源文件(如main.cpp),编制main函数,完成相关的测试工作。
 测试工作可以采用“渐进”的思路,每次涉及的函数应该尽可能少。
 */

1)linklist.h

#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LinkList;
void InitList(LinkList *&L);                   //初始化链表
void DestroyList(LinkList *&L);                //销毁链表
bool ListInsert(LinkList *&L,int i,ElemType e);//插入数据
void DispList(LinkList *L);                    //输出节点数据

2)linklist.cpp

#include "linklist.h"
void InitList(LinkList *&L)
{
    L=(LinkList *)malloc(sizeof(LinkList));
    L->next=NULL;
}
void DestroyList(LinkList *&L)
{
    LinkList *pre=L,*p=L->next;
    while(p!=NULL)
    {
        free(pre);
        pre=p;
        p=pre->next;
    }
    free(pre);
}
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);
        p=p->next;
    }
    printf("\n");
}

3)main.cpp

#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;
}


运行结果:

 

知识点总结:

如同建立顺序表算法库一样,把链表的初始化,销毁,插入数据和输出数据的函数写到linklist.cpp中,通过main函数测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值