1. 程式人生 > 其它 >資料結構一元多項式求導鏈式線性表_資料結構與演算法:2線性表的鏈式儲存

資料結構一元多項式求導鏈式線性表_資料結構與演算法: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