13.3 链表-按顺序插入和查找删除节点

来源:互联网 发布:模拟现货交易软件 编辑:程序博客网 时间:2024/06/14 21:48

13.3 链表-按顺序插入和查找删除节点

#include <stdio.h>#include <string.h>#include <stdlib.h>struct Student{    int id;    char name[16];    Student* next;};// 定义了一个有头节点Student m_head = {0};// 按顺序插入节点int insert(Student* obj){    Student* cur = m_head.next; // 当前节点current    Student* pre = &m_head;  // 上一个节点previous    while(cur)    {               if(obj->id < cur->id) // 找到这个位置            break;        pre = cur;        cur = cur->next;  // 找到最后一个对象    }    // 插入到pre节点的后面    obj->next = pre->next;    pre->next = obj;    return 0;}// 按id查找并删除节点void remove(int id){    Student* cur = m_head.next; // 当前节点current    Student* pre = &m_head;  // 上一个节点previous    while(cur)    {               if(id == cur->id) // 找到这个位置        {            // 删除该节点            pre->next = cur->next;            free(cur);            break;        }        pre = cur;        cur = cur->next;  // 找到最后一个对象    }}// 遍历void show_all(){    Student* p = m_head.next;     while(p)    {        printf("ID: %d, name: %s\n", p->id, p->name);        p = p->next; // 下一个对象    }}int main(){    Student* obj = NULL;    obj = (Student*)malloc (sizeof(Student));    obj->id = 8;    strcpy(obj->name, "888");    insert(obj);    obj = (Student*)malloc (sizeof(Student));    obj->id = 1;    strcpy(obj->name, "111");    insert(obj);    obj = (Student*)malloc (sizeof(Student));    obj->id = 4;    strcpy(obj->name, "444");    insert(obj);    obj = (Student*)malloc (sizeof(Student));    obj->id = 3;    strcpy(obj->name, "333");    insert(obj);    obj = (Student*)malloc (sizeof(Student));    obj->id = 5;    strcpy(obj->name, "555");    insert(obj);    remove(3);    remove(2);    show_all();    return 0;}
阅读全文
0 0
原创粉丝点击