数据结构一元多项式求导链式线性表_数据结构与算法:2线性表的链式存储

上一节讲述了线性表的顺序存储,对于线性表的顺序存储出现的问题,需要分配一整段连续的存储空间失败的可能性较之于链式存储大,同时进行数据插入和删除的时候可能造成需要移动整个线性表。下面要说的线性表的链式存储很好的解决了上述出现的问题,相比较于顺序存储链式存储稍微难理解一些,编程的难度也稍微大一些。

下面讲述线性表链式存储的一些函数:

初始化线性表

List * ListInit();

销毁线性表

int ListDestroy(List *list);

设置线性表为空

int ListClear(List *list);

获取线性表的长度

int ListLength(pList list);

判断线性表是否为空

int ListEmpty(pList list);

获取线性表的对应位置的值

int GetElem(pList list,int index);

获取此线性表中是否存在此数据,存在返回此数据在线性表中的位置

int LocateElem(pList list,int data);

判断此数据是线性表中若不是线性表首数据返回前驱值,如果是返回空

int PreElem(pList list,int data);

判断此数据是线性表中若不是线性表尾数据返回后继值,如果是返回空

int SuccElem(pList list,int data);

在线性表的指定位置插入数据

int ListInsert(pList list,int index,int data);

在线性表的制定位置删除数据

int ListDel(pList list,int index);

输出线性表的数据

void ListDisplay(pList list);

源程序:

list.h

#ifndef _LIST_H#define _LIST_H#define LIST_ERR -1#define LIST_OK 0typedef struct{ int data; struct ListNode * next;}ListNode,*plistnode;typedef struct{ plistnode head; unsigned int length;}List,*pList;/**初始化线性表*/List * ListInit();/**销毁线性表*/int ListDestroy(List *list);/**设置线性表为空*/int ListClear(List *list);/**获取线性表的长度*/int ListLength(pList list);/**判断线性表是否为空*/int ListEmpty(pList list);/**获取线性表的对应位置的值*/int GetElem(pList list,int index);/**获取此线性表中是否存在此数据,存在返回此数据在线性表中的位置*/int LocateElem(pList list,int data);/**判断此数据是线性表中若不是线性表首数据返回前驱值,如果是返回空*/int PreElem(pList list,int data);/**判断此数据是线性表中若不是线性表尾数据返回后继值,如果是返回空*/int SuccElem(pList list,int data);/**在线性表的指定位置插入数据*/int ListInsert(pList list,int index,int data);/**在线性表的制定位置删除数据*/int ListDel(pList list,int index);/**输出线性表的数据*/void ListDisplay(pList list);#endif
19613b8db01b98319cb111bc2b5f049a.gif

list.c

#include #include "list.h"static ListNode *Getindex(pList list,int index);List * ListInit(){ List *list=NULL; printf("开始分配地址"); if(NULL==(list=(ListNode *)malloc(sizeof(List)))) { printf("分配地址空间失败"); return LIST_ERR; } printf("分配的地址为%u
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值