linux C學習筆記03--單鏈表

來源:互聯網
上載者:User

標籤:

單鏈表一直是程式員的基礎,我也來複習下,下面是link.c中的代碼,供main.c 調用,代碼很簡單,單鏈表的插入,刪除,尋找和遍曆輸出,

#include <stdio.h>#include <stdlib.h>typedef struct link{    int data;    struct link* next;}*LINK;int insert_link(LINK* head,int data);int print(LINK head);int delete_node(LINK *head,int n);int find_node(LINK head,int n);int insert_link(LINK* head,int data){    LINK node = (LINK)malloc(sizeof(struct link));    LINK tmp = NULL;    if(node != NULL)    {        node->data = data;        node->next = NULL;    }    else    {        printf("malloc new node error!\n");        return -1;    }    if(*head == NULL)    {        *head = node;        return 0;    }    tmp = *head;    while(tmp->next != NULL)    //find ending node    {        tmp = tmp->next;    }    tmp->next = node;    return 0;}int print(LINK head){    LINK tmp = head;    while(tmp != NULL)    {        printf("%d \n",tmp->data);        tmp = tmp->next;    }    return 0;}int    delete_node(LINK *head,int n)    //delete the node of index is n{    LINK tmp = *head;    LINK save = tmp;    int i = 0;    if(n == 1)    {        tmp = tmp->next;        free(save);        *head = tmp;        return 0;    }    while(tmp != NULL)    {                if(i == n-1)    
{ save->next = tmp->next; free(tmp); break; } save = tmp; tmp = tmp->next; i++; } if(n-1 > i) { printf("error: delete %d is out of length\n",n); return -1; } return 0;}int find_node(LINK head,int n){ LINK tmp = head; int data = 0; int i = 0; while(tmp != NULL) { if(i == n-1) { data = tmp->data; break; } tmp = tmp->next; i++; } if(n-1 > i) { printf("find_node error: out of link length\n"); return -1; } return data;}

接著是main.c:

#include <stdio.h>#include <stdlib.h>typedef struct link{    int data;    struct link* next;}*LINK;extern int insert_link(LINK* head,int data);extern int print(LINK head);extern int delete_node(LINK *head,int n);extern int find_node(LINK head,int n);int main(int argc,char* argv[]){    LINK phead = NULL;        insert_link(&phead,1);    insert_link(&phead,2);    insert_link(&phead,3);    insert_link(&phead,4);    insert_link(&phead,5);    insert_link(&phead,6);    print(phead);    delete_node(&phead,1);                //delete the node by index    print(phead);    delete_node(&phead,2);                //delete the node by index    print(phead);    delete_node(&phead,1);                //delete the node by index    print(phead);    printf("find node 6 is %d\n",find_node(phead,6));        //finding the node by index    return 0;}

 

linux C學習筆記03--單鏈表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.