資料結構一元多項式求導鏈式線性表_資料結構與演算法:2線性表的鏈式儲存
阿新 • • 發佈:2020-12-10
技術標籤:資料結構一元多項式求導鏈式線性表
上一節講述了線性表的順序儲存,對於線性表的順序儲存出現的問題,需要分配一整段連續的儲存空間失敗的可能性較之於鏈式儲存大,同時進行資料插入和刪除的時候可能造成需要移動整個線性表。下面要說的線性表的鏈式儲存很好的解決了上述出現的問題,相比較於順序儲存鏈式儲存稍微難理解一些,程式設計的難度也稍微大一些。
下面講述線性錶鏈式儲存的一些函式:
初始化線性表
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
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