#pragma once
extern"c"
list_node,list_link;
//頭插建立鍊錶
list_link *create_list_head(int n);
//尾插法建立鍊錶
list_link *creat_list_tail(int n);
//獲取長度
int get_list_length(list_link *l);
//獲取節點
list_node *get_list_node(list_link* l,int pos);
//插入乙個節點到有序鍊錶
int insert_node_sortlist(list_link *sortlist,list_node *node,comparefun fun);
//插入節點
int insert_node(list_link* l,int pos,data data);
//刪除節點
int delete_node(list_link *l,int pos);
//清空鍊錶
int clear_list(list_link *l);
//對鍊錶排序
void sort_list(list_link *l,comparefun fun);
//合併有序鍊錶
list_link* merge_list(list_link* la,list_link *lb);
//鍊錶逆序
void reverse_list(list_link *l);
void print_list(list_link* l);
};
#include "mysingelist.h"
#include #include #include list_link *create_list_head(int n)
return head;
}list_link *creat_list_tail(int n)
q->next = null;
return head;
}int get_list_length(list_link *l)
else
return length; }}
list_node *get_list_node(list_link* l,int pos)
if (pos==0)
int i = 1;
list_node *p = l->next;
while(p&&pos>i)
if (i == pos)
return null;
}int insert_node(list_link* l,int pos,data data)
int i = 0;
list_node *node = l->next;
while(node)
node = node->next;
} list_node *newnode = (list_node*)malloc(sizeof(list_node));
newnode->data = data;
newnode->next = node->next;
node->next = newnode;
return 0;
}int insert_node_sortlist(list_link *sortlist,list_node *node,comparefun fun)
list_node *p = sortlist->next;
list_node *q = sortlist;;
if (p==null)
else
q = p;
p = p->next;
} q->next = node; }
return 0;
}int delete_node(list_link *l,int pos)
list_node *node = l;
int i = 0;
while(node&&inext;
} list_node *q = node->next;
node->next = q->next;
free(q);
return 0;
}int clear_list(list_link *l)
l->next = null;
return 0;
}bool foo(data a,data b)
void sort_list(list_link *l,comparefun fun)
} }}list_link* merge_list(list_link* la,list_link *lb)
if (lb == null)
if (get_list_length(la)>=get_list_length(lb))
else
while(p)
free(lb);
return lc;
}void reverse_list(list_link *l)
p = head->next;
q = p->next;
p->next = null;
while(q)
head->next = p;
}void print_list(list_link* l)
else }
printf("\nlist end\n");
}
單鏈表的操作
單鏈表是一種非常重要的資料結構,下面用c語言對單鏈表的操作做乙個簡單的總結 typedef struct nodenode,linklist 1 單鏈表的建立 建立乙個單鏈表,鍊錶裡面存放有十個偶數 2到20 有頭節點,頭節點不存放元素。linklist createlinklist return ...
單鏈表的操作
1.定義單鏈表的介面函式 ifndef linklist h define linklist h typedef int elemtype typedef struct node node node initnode bool addnode node head,elemtype data 頭插法 ...
單鏈表的操作
單鏈表的頭插法 尾插法 遍歷 初始化 在位置i前插入元素 刪除位置i處的元素 include include typedef int itemvalue typedef struct node 鍊錶節點定義 linknode,plinknode 初始化單鏈表 void initiallinklist...