单向链表的各种操作和注意事项
第一次试着写点东西,记录一下最近学习的知识点
———————————————————————————————————————————
链表的结构体
typedef struct node{
int date;
struct node* next;
}Node;
———————————————————————————————————————————
输出链表
void PrintNode(Node *head){//遍历链表,输出链表
Node*p=head->next;
while(p!=NULL){
printf("%d ",p->date);
p=p->next;
}
printf("\n");
}
———————————————————————————————————————————
链表逆序
Node *ReverseNode(Node*head){
if(head->next==NULL||head->next->next==NULL){
return head;//如果链表为空或只有一个元素直接返回
}
Node*p,*q,*t;
p=head->next;//p为头结点后的第一个结点,即第一个数据结点
q=head->next->next;//q为第二个数据结点
t=NULL;
while(q!=NULL){//逆序操作
t=q->next;
q->next=p;
p=q;
q=t;
}
head->next->next=NULL;//使第一个数据结点后续指向NULL,作为逆序链表后的链尾
he