创建链表
链表就是一个个节点相互连接构成,前面一个节点指向下一个节点。所以首先写链表节点的结构体。(PS:链表不是顺序表,是线性表。)
typedef struct ListNode* List;
struct ListNode{
int val;
struct ListNode *next;
};
头插法
头插法就是每次都从链表的头结点插入,我一般创建的时候链表是有头结点的,这样操作会比较方便。
struct ListNode * CreateLinkListFromHead(List head){
List node;
int i = 0;
for (i = 0; i < 3; i++) {
node = (List)malloc(sizeof(struct ListNode));
scanf("%d",&node->val);
node->next = head->next;
head->next = node;
}
return head;
}
尾插法
尾插法就是每次插在链表的尾部,需要有个指针保存当前尾节点的位置。
struct ListNode * CreateLinkListFromEnd(List head){
List node;
List curr = head;
int i = 0;
for (i = 0; i < 3; i++) {
node = (List)malloc(sizeof(struct ListNode));
scanf("%d",&node->val);
node->next = NULL;
curr->next = node;
curr = node;
}
return head;
}