链表
链表是什么:
其实是多个结构体,里面存有数据和指针,其中上一个结构体的指针成员指向了下一个结构体,如此往复,就可以实现链表。
如果我们想在链表后面加入新的内容,只需要再创建(malloc)一个节点,并使之前尾部的节点中的指针指向他。
链表可以分为两种:有空头和无空头,有空头也就是第一个节点使不储存数据的,其他节点都接在他的后面,无空头的链表第一个节点存有数据。
##创建链表
LinkList createListForHeadInsert() {
LinkList Head= (LinkList)malloc(sizeof(LinkList));
Head->next = NULL;
LNode *s;
int x;
while(scanf("%d",&x) && x!= -1) {
s = (LNode*)malloc(sizeof(LNode*));
s->data = x;
s->next = Head->next;
Head->next = s;
}
return Head;
}
##输出链表
void printList(LinkList Head) {
LNode *p;
for (p = Head->next;p!=NULL;p = p->next) {
printf("%d\t",p->data);
}
printf("\n");
}
##链表的逆置
头插法:
LinkList createListForHeadInsert() {
LinkList Head= (LinkList)malloc(sizeof(LinkList));
Head->next = NULL;
LNode *s;
int x;
while(scanf("%d",&x) && x!= -1) {
s = (LNode*)malloc(sizeof(LNode*));
s->data = x;
s->next = Head->next;
Head->next = s;
}
return Head;
}