單鏈表常見面試題(C語言實現)


總結常見的單鏈表操作函數,復習使用,僅供參考,代碼調試通過。

#include<stdio.h>

typedef struct node{
    int data;
    struct node *next;
}node_t; 

//打印鏈表
void list_node(node_t *head){
    while(head){
        printf("%d",head->data);
        head=head->next;
    }
} 

//求鏈表長度
int list_len(node_t *head){
    int n=0;
    while(head)
    {
        ++n;
        head=head->next;
    }
    return n;
}

//反轉鏈表
void reverse(node_t *head){
    node_t *r,*p,*q;
    r=NULL;
    p=head;
    q=p->next;
    while(p){
        p->next=r;
        r=p;
        p=q;
        if(q){
            q=q->next;
        }
    }
    head=r; 
} 

//測試函數
int main(){
    node_t d={4,0},c={3,&d},b={2,&c},a={1,&b};
    printf("%d\n",list_len(&a));
    list_node(&a);
    reverse(&a);
    list_node(&d);
    return 0;
} 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM