線性表的鏈式儲存

2021-08-31 13:35:33 字數 2397 閱讀 3724

#include

#include

#include

typedef int elemtype;

typedef struct nodenode,*nodeptr;//鍊錶節點

typedef struct listlist,*listptr;//鍊錶,頭結點為0位置

listptr initlist();//初始化鍊錶

void insertlist(listptr l, int i, elemtype e);//如果i滿足條件在鍊錶的i位置插入元素e

void deletelist(listptr l, int i, elemtype* e);//如果i滿足條件在鍊錶的i位置刪除元素,並用e返回他的值

bool emptylist(listptr l);//判斷鍊錶是否為空

int lengthlist(listptr l);//返回鍊錶長度

void getelemtype(listptr l, int i, elemtype* e);//用e返回鍊錶i位置的元素

void freelist(listptr l);//釋放鍊錶記憶體

void printlist(listptr l);//列印鍊錶

void inserttail(listptr l, elemtype e);//尾插法將元素插入表尾

int main()

else

puts("輸出鍊錶長度");

printf("%d\n", lengthlist(l));

puts("將0到9插入鍊錶當中");

for (int i = 0; i < 10; i++)

puts("刪除鍊錶中第5個元素,並用e返回它的值");

elemtype e;

deletelist(l, 5, &e);

printf("e的值是%d\n", e);

puts("判斷鍊錶是否為空");

if (emptylist(l))

else

puts("輸出鍊錶長度");

printf("%d\n", lengthlist(l));

puts("列印鍊錶");

printlist(l);

puts("釋放鍊錶記憶體");

freelist(l);

system("pause");

return 0;

}listptr initlist()

void insertlist(listptr l, int i, elemtype e)

nodeptr newnode = (nodeptr)malloc(sizeof(node));

newnode->data = e;

newnode->next = null;

nodeptr temp;

temp = l->head;

int count = 0;

while (count != i - 1)

newnode->next = temp->next;

temp->next = newnode;

l->size++;

}void deletelist(listptr l, int i, elemtype* e)

if (emptylist(l))

nodeptr temp;

temp = l->head;

int count = 0;

while (count != i - 1)

*e = temp->next->data;

nodeptr freenode = temp->next;

temp->next = temp->next->next;

free(freenode);

l->size--;

}bool emptylist(listptr l)

else

}int lengthlist(listptr l)

void getelemtype(listptr l, int i, elemtype* e)

if (emptylist(l))

nodeptr temp;

temp = l->head;

int count = 0;

while (count != i - 1)

*e = temp->next->data;

}void freelist(listptr l)

nodeptr tempnode = l->head->next;

nodeptr freenode;

while (tempnode != null)

}void printlist(listptr l)

putchar('\n');

}void inserttail(listptr l, elemtype e)

線性表的鏈式儲存

此方法雖然簡單,但是真寫起來太複雜了。線性表的鏈式儲存 include include struct lnode 線性表的初始化 void init l lnode l 線性表的後插建立 void create l1 lnode l n next null 線性表的後插建立 void create ...

線性表的鏈式儲存

引言 一 單鏈表 相較於順序儲存用連續的儲存單元儲存,單鏈表採用鏈式儲存結構,用一組位址任意的儲存單元儲存資料元素。特點 1 儲存單元可以是不連續的,即邏輯結構與物理結構可以不相同 2 元素用結點儲存,每個結點由元素值和下乙個元素的位址構成 3 單鏈表是由每個結點的指標域按照邏輯次序相互連線而成的。...

線性表的鏈式儲存

順序結構需要一塊連續的儲存空間,那如果我們只有零散的空間呢?線性表的鏈式儲存是指通過一組任意的儲存單元來儲存線性表中的資料元素。為了建立起資料元素之間的線性關係,對每個鍊錶結點,除了存放元素自身的資訊之外,還需要存放乙個指向其後繼的指標。因為每個結點只有乙個指標指向下乙個結點,故又稱單鏈表 通常用 ...