線性表的陣列實現和鍊錶實現

2021-07-29 09:22:31 字數 1749 閱讀 6391

線性表的順序儲存實現

//線性表用陣列來實現 

typedef struct polynode *polynomial;

struct polynode;

typedef struct lnode *list;

struct lnode;

struct lnode l;

list ptrl;//線性表結構的指標

//訪問下標為i的元素:l.data[i]或ptrl->data[i]

//線性表的長度:l.last+1或ptrl->last+1

//1.初始化(建立空的順序表)

list makeempty()

//2.查詢

//查詢成功的平均比較次數為(n+1)/2,平均時間效能為o(n)

//3.插入操作實現

void insert(elementtype x,int i,list ptrl)

if(i<1||i>ptrl->last+2)

for(j=ptrl->last;j>=i-1;j--)

ptrl->data[j+1]=ptrl->data[j];//將ai~an倒序向後移動

ptrl->data[i-1]=x;//新元素插入

ptrl->last++;//last仍指向最後元素

return;

} //平均移動次數為n/2,平均時間效能為o(n)

//4.刪除操作實現

void delete(int i,list ptrl)

for(j=i;j<=ptrl->last;j++)

ptrl->data[i-1]=ptrl->data[i];//將ai+1~an順序向前移動

ptrl->last--;//last仍指向最後元素

return;

} //平均移動次數為n/2,平均時間效能為o(n)

線性表的鏈式儲存實現

//鍊錶

typedef struct lnode *list ;

struct lnode;

struct lnode l;

list ptrl;

//1.求表長——鍊錶遍歷

int length(list ptrl)//煉表頭指標

return j;

} //時間效能為表長o(n)

//2.查詢

//(1)按序號查詢:findkth;

list findkth(int k,list ptrl)

if(i==k)

return p;//找到第k個,返回指標

else

return null;//否則返回空

} //(2)按值查詢

list find(elementtype x,list ptrl)

//3.插入

list insert(elementtype x,int i,list ptrl)//將x插入到ptrl的第i個位置

p=findkth(i-1,ptrl);//查詢第i-1個結點

if(p==null)

else

} //4.刪除

list delete(int i,list ptrl)

p=findkth(i-1,ptrl);//查詢第i-1個結點

if(p==null)

else if(p->next==null)

else

}

線性表 陣列實現 鍊錶實現 C語言

1 初始化 建立空的順序表 typedef int position typedef struct lnode list struct lnode list makeempty 2 查詢 define error 1 position find elementtype x,list ptrl 3 插...

線性表的鍊錶實現

include include define elemtype int typedef struct lnode list struct lnode struct lnode l list ptrl list makeempty list ptrl 建立空表 int length list ptrl...

線性表的鍊錶實現

include printf輸出函式和scanf輸入函式所在標頭檔案 include exit退出函式所在標頭檔案 include malloc動態記憶體分配函式 realloc函式所在的標頭檔案 includeusing namespace std 用 define巨集定義來定義符號常量 函式結果...