c語言鏈表 頭指針

#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
//頭指針鏈表
//移除一個節點的思路:先查找到所要刪除的節點,返回這個節點的地址。
//                   然後在查找返回的地址,這時候被查找的地址是P節點,依次從head往後遍歷的節點是pre;

typedef struct Student
{
    int data;
    struct Student *next;//定義了一個指針,指向一個Student結構體(指向新的節點)
}Student;

Student *head = NULL;    //定義一個指針,指向Student類型的數據

//創建節點
Student *CreatNode(int value)     //這裏是要返回一個先建立的指針
{
    Student *student = NULL;
    student = (Student *)malloc(sizeof(Student)); //malloc申請空間返回的是void *類型,可以強制轉換爲其他類型。
    student->data = value;
    student->next = NULL;
    return student;
}

//插入一個節點
void insert(Student *student)
{
    student->next = head;
    head = student;
}


//查找一個節點
Student *find(int value)
{
    Student *student;
    student = head;
    while(student != NULL)
    {
        if(student->data == value)
        {
            printf("find it\n");
            return student;
        }
        student = student->next;
    }
}


//刪除一個節點
int  removed(Student *student)
{
    Student *pre;
    pre = head;
    if(head == student)
    {
        head = student->next;
        return 0;
    }
    while(pre->next != NULL)
    {
        if(pre->next == student)
        {
            pre->next = student->next;
            printf("刪除完畢\n");
            break;
        }
        pre = pre->next;
    }
    return 0;
}



//遍歷
void traverse()
{
    Student *student;        //定義一個Student類型的指針,指針變量是student,他存的是一個指向Student類型數據的地址。
    student = head;
    while(student != NULL)
    {
        printf("%d\n",student->data);
        student = student->next;
    }
}


//釋放空間
void free_student()
{
    Student *student;
    student = head;
    while(student != NULL)
    {
        free(student);
        student=student->next;
    }
}

int main()
{
   Student *student = CreatNode(5);
   insert(student);
   student = CreatNode(40);
   insert(student);
   student = CreatNode(30);
   insert(student);
  // Student *p=find(30);
  // removed(p);
   traverse();
   free_student();
}

發佈了40 篇原創文章 · 獲贊 147 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章