線性表 鏈式儲存實現

2021-10-05 21:18:10 字數 2107 閱讀 1091

定義

邏輯上連續,物理上可以分散的線性表儲存方式。可以充分利用不連續空間,但是由於需要儲存後繼節點指標,故空間開銷大。

結構定義

定義乙個頭節點 其儲存帶值節點個數 和 第乙個帶值節點指標

typedef struct linklistlist;
基本操作

list* createlist()

l->data=0;//代值元素個數

l->next=null;

return l;

}

list* removelist(list *l)else

//後對頭節點進行釋放

free(head);

printf("鍊錶成功釋放完畢\n");

} return null;

}

list* addnode(list *l,int pos,int val)else

//申請乙個元素空間

list* node=(list*)malloc(sizeof(node));

node->data=val;

node->next=pre->next;

pre->next=node;

head->data++;

} return head;

}

list* delnode(list* l,int pos)else

pre->next=l->next;

free(l);

head->data--;

} return head;

}

void getval(list *l,int pos)else

printf("[%d]=%d\n",pos,l->data);

}}

void printflist(list* l)else

printf("鍊錶內容結束\n"); }

}

彙總

#include#includetypedef struct linklistlist,node;

list* createlist()

l->data=0;//代值元素個數

l->next=null;

printf("建立鍊錶成功\n");

return l;

}list* removelist(list *l)else

//後對頭節點進行釋放

free(head);

printf("鍊錶成功釋放完畢\n");

} return null;

} list* addnode(list *l,int pos,int val)else

//申請乙個元素空間

list* node=(list*)malloc(sizeof(node));

node->data=val;

node->next=pre->next;

pre->next=node;

head->data++;

} return head;

}list* delnode(list* l,int pos)else

pre->next=l->next;

free(l);

head->data--;

} return head;

}void getval(list *l,int pos)else

printf("[%d]=%d\n",pos,l->data); }}

void printflist(list* l)else

printf("鍊錶內容結束\n"); }

}int main()

}}

也可將頭結點作為乙個儲存值的節點,但是後面很麻煩不能立刻得到煉錶帶值節點長度

線性表鏈式儲存

線性表鏈式儲存結構的建立 刪除最小值結點 值唯一 刪除某個指定值 不唯一 就地逆置 反向輸出 遞增排序 刪除重複結點 根據奇偶序號劃分成兩個帶頭結點的單鏈表。include stdio.h include stdlib.h typedef struct lnode lnode,llist void ...

線性表 鏈式儲存

概念 邏輯上相鄰的兩個資料元素在物理位置上可能相鄰也可能不相鄰,這中儲存結構為非順序映像或鏈式映像。特點 線性表的鏈式儲存結構的特點是可以用一組任意的儲存單元來儲存線性表中的資料,這組儲存單元可以是連續的,也可以是不連續的。由於這種特性,單鏈表中要取得第i個元素,必須從第乙個元素開始尋找,因此單鏈表...

線性表 鏈式儲存

基類 ifndef linearlist h define linearlist h filename linearlist.h creater qianchenglong date 2011 10 18 comments 線性表的抽象基類 template class linearlist lin...