鍊錶ADT實現 C語言 2018 3 11

2021-08-16 18:15:36 字數 1306 閱讀 8722

#include #include #define name_to_str(name_)  (#name_)

/**< 定義結點及結構體指標,結構體指標linklist為煉表頭結點指標*/

typedef struct lnodelnode,*linklist;//結構體指標

/**< 初始化鍊錶 */

lnode* init_ll()

/**< 在第pos個結點之前插入乙個data為val的新節點 */

void insert_ll(linklist pll,int pos,int val)

}a->next=p->next;

p->next=a;

}/**< 刪除結點,pos之前 */

void delete_ll(linklist pll,int pos)

/**< 求直接前驅 */

lnode* priorelment_ll(linklist pll,int data)

/**< 求直接後繼 */

lnode* nextelment_ll(linklist pll,int data)

/**< 返回第pos個資料的值*/

int getelement_ll(linklist pll,int pos)

/**< 泡排 */

void bubblesort_ll(linklist pll)

//printf("cnt=%d",cnt);

q=pll->next;

for(i=0;idatanext->data)

else

}//printf("當前迴圈完成\n");

} printf_ll(pll);

}/**< 合併有序鍊錶 */

linklist add_ll(linklist p,linklist q)

else

// printf("cdata=%d\n",c->data);

c=c->next;

c->next=null;

}if (a==null)

c->next=b;

else c->next=a;

printf("合併有序鍊錶結果為:\n");

printf_ll(l);

}/**< 列印鍊錶 */

void printf_ll(linklist pll)

while(p->next!=null);

printf("\n\n");

}/**< 測試adt */

int main()

C語言鍊錶ADT

這是乙個以listdata 乙個結構體 為資料域的鍊錶,如需使用,請在list.h中修改對它的定義。鍊錶list 資料結構體listdata 在list.件裡的注釋已經明確說明各個函式的作用 引數與返回值,不再贅述 與陣列相同,下標從0開始 使用前,先用newlist 函式建立鍊錶 使用後,記得用d...

鍊錶ADT實現

鍊錶煉表有一系列不必再記憶體中連續的結構組成,不需要使用位址連續的儲存單元。它是通過 鏈 來建立邏輯關係的,因此在對鍊錶進行插入,刪除操作時不需要移動元素,而只需要修改指標即可。鍊錶分類 按是否包含指向前繼的指標可分為單鏈表和雙向鍊錶 按是否成環狀可以分為迴圈鍊錶和非迴圈鍊錶。由於連表示離散的分布在...

棧ADT的鍊錶實現

棧adt鍊錶實現的型別宣告 struct node typedef struct ndoe ptrtonode typedef ptrtonode stack struct node 測試是否為空棧 int isempty stack s 建立空棧 stack createstack void 清空...