C C語言實現的鍊錶及其各種鍊錶操作

2021-08-17 01:29:32 字數 2726 閱讀 8108

#include#includetypedef struct lnode

lnode, *linklist; //lnode : 結構體型別,linklist :結構體指標;

typedef enum bool;

//lnode* 等價於 linklist

//頭插法

linklist creatlist1(linklist l)

return l;

}//尾插法

linklist creatlist2(linklist l)

r->next = null; //下乙個節點為null

return l;

}//輸出鍊錶

void printlist(linklist l)

}//輸出鍊錶長度(不包括頭結點)

int length(linklist l)

return length;

}//判斷是否為空

bool empty(linklist l)

else

}//刪除整個鍊錶

void destroylist(linklist l)

l->next = null;

}int listdelete(linklist l, int i)

int index = 0;

linklist r = l, s;

while (index != i - 1) //r處於第i-1個節點,index=i-1

s = r->next;

index = s->data;

r->next = r->next->next;

free(s);

return index;

}//插入元素

bool listinsert(linklist l, int i, int e)

while (index != i - 1) //r處於第i-1個節點,index=i-1

s = (lnode*)malloc(sizeof(lnode));

s->data = e;

//正常情況

if (inext = r->next;

r->next = s;

} //如果插入位置為最後一位

else

return true;

}//得到指定位置的值

linklist getelem(linklist l, int i)

int index = 0;

linklist r = l;

while (index != i) //r處於第i個節點,index=i

// return r->data;

return r;

}void main()

else

break; /* 可選的 */

//print all elem list

case 2:

if (length(l)>0)

else

break; /* 可選的 */

//print list length

case 3:

printf("list length : %d\n", length(l)); printf("****************************************====\n");

break; /* 可選的 */

//is list empty?

case 4:

empty(l); printf("****************************************====\n");

break; /* 可選的 */

//insert elem in list's index

case 5:

printf("input insert index : \n");

scanf_s("%d", &i);

printf("input insert elem : \n");

scanf_s("%d", &e);

listinsert(l, i, e);

printf("****************************************====\n");

break; /* 可選的 */

//delete index in list

case 6:

printf("input delete index : \n");

scanf_s("%d", &i);

listdelete(l, i); printf("****************************************====\n");

break; /* 可選的 */

//get index in list

case 7:

printf("input index : \n");

scanf_s("%d", &i);

r = getelem(l, i);

if (r!=l)

break; /* 可選的 */

case 8:

destroylist(l);

break; /* 可選的 */

/* 您可以有任意數量的 case 語句 */

default: /* 可選的 */

exit(0);

break;

//statement(s);

} }}

go語言實現鍊錶

宣告結構體 宣告全域性變數,儲存頭結點 var head node var curr node 宣告節點型別 type node struct 建立頭結點 func createheadnode data string node 新增新節點 func addnode data string node...

Go語言 實現鍊錶

鍊錶是乙個結點指向下乙個結點的儲存結構,每乙個結點有兩個元素,乙個是存放資料本身,另乙個資料指向下乙個結點,由這些結點組成乙個鍊錶 package main import fmt type node struct type nodelist struct func this nodelist add...

Python語言 實現鍊錶

鍊錶是乙個結點指向下乙個結點的儲存結構,每乙個結點有兩個元素,乙個是存放資料本身,另乙個資料指向下乙個結點,由這些結點組成乙個鍊錶 class node def init self,data self.data data self.next none class nodelist def init ...