单链表的增加---无头结点
本文展示单链表的增加
1.从头部添加
2. 从尾部添加
/** * 初始化单链表 */
typedef struct ListNode {
ElemType data;
struct ListNode *next;
} ListNode;
typedef ListNode *List;
/** * 头结点为空的初始化 * @param head */
void InitList(List *head) {
*head = NULL;
}
/** * 单链表插入--从头部插入(无头结点) * @param head */
void CreateListStartBegin(List *head) {
*head = (ListNode *) malloc(sizeof(ListNode));
assert(*head != NULL);
(*head)->data = 1;
(*head)->next = NULL;
for (int i = 2; i <= 10; ++i) {
ListNode *s = (ListNode *) malloc(sizeof(ListNode));
assert(s != NULL);
s->data = i;
s->next = NULL;
*head = s;
}
}
/** * 单链表插入--从尾部插入(无头结点) * @param head */
void CreateListStartEnd(List *head) {
*head = (ListNode *) malloc(sizeof(ListNode));
assert(*head != NULL);
(*head)->data = 1;
(*head)->next = NULL;
ListNode *p = *head;
for (int i = 2; i <= 10; ++i) {
ListNode *s = (ListNode *) malloc(sizeof(ListNode));
assert(s != NULL);
s->data = i;
s->next = NULL;
p->next = s;
p = s;
}
}