单链表的增加---有头结点
1.从头部添加
2.从尾部添加
/**
* 初始化单链表
*/
typedef struct ListNode {
ElemType data;
struct ListNode *next;
} ListNode;
typedef ListNode *List;
/**
* 初始化单链表,头结点不为空
* @param head
*/
void InitListHeadNoNull(List *head) {
*head = (ListNode *) malloc(sizeof(ListNode));
assert(*head != NULL);
(*head)->next = NULL;
}
/**
* 单链表插入--从头部插入(有头结点)
*
* 头指针的next赋给要插入新节点的next
* 新插入的s放到头结点的后面.
* @param head
*/
void createListStartBegin(List *head) {
for (int i = 1; i <= 10; ++i) {
ListNode *s = (ListNode *) malloc(sizeof(ListNode));
assert(s != NULL);
s->data = i;
/**
* 头指针的next赋给要插入新节点的next
* 新插入的s放到头结点的后面.
*/
s->next = (*head)->next;
(*head)->next = s;
}
}
/**
* 单链表插入--从尾部插入(有头结点)
*
* @param head
*/
void creatListStartEnd(List *head) {
ListNode *p = *head;
for (int i = 1; i <= 10; ++i) {
p = p->next = (ListNode *) malloc(sizeof(ListNode));
assert(p != NULL);
p->data = i;
p->next = NULL;
}
}