#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 清空...