简单的链表实现和测试

链表定义

typedef struct LinkList{
    char name[12];
    int age;
    char gender;
    struct LinkList* next;
}LinkList;

链表的测试

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct LinkList{
    char name[12];
    int age;
    char gender;
    struct LinkList* next;
}LinkList;

int main(){
    LinkList* head = NULL;
    LinkList* current = NULL;
    head = (LinkList*)malloc(sizeof(LinkList));
    head->next = NULL;

    LinkList* node = (LinkList*)malloc(sizeof(LinkList));
    // char ptr[5] = {'j','e','f','f','\n'};
    char* ptr = "jeffxu";
    memcpy(node->name,ptr,sizeof(ptr));
    node->age = 25;
    node->gender = 'M';
    node->next = NULL;
    head->next = node;
    current = node;
    printf("%s\n",current->name);

    LinkList* node1 = (LinkList*)malloc(sizeof(LinkList));
    // char ptr[5] = {'j','e','f','f','\n'};
    char* ptr1 = "bobo";
    memcpy(node1->name,ptr1,sizeof(ptr1));
    node1->age = 24;
    node1->gender = 'W';
    node1->next = NULL;
    current->next = node1;
    current = node1;
    printf("%s\n",current->name);

    LinkList* node2 = (LinkList*)malloc(sizeof(LinkList));
    // char ptr[5] = {'j','e','f','f','\n'};
    char* ptr2 = "candy";
    memcpy(node2->name,ptr2,sizeof(ptr2));
    node2->age = 20;
    node2->gender = 'W';
    node2->next = NULL;
    current->next = node2;
    current = node2;
    printf("%s\n",current->name);

    LinkList* tmp = head;
    for(;tmp->next != NULL;){
        tmp = tmp->next;
        printf("%s\n",tmp->name);
    }
    printf("123");
    return 0;
}

输出

jeffxu
bobo
candy
jeffxu
bobo
candy
123

总结

这里的链表实现采用了有头结点的方式,然后使用current指针一直指向新插入的结点,这样后续既可以持续插入新结点(这里采用的是尾插法),也可以从头遍历整个链表。

在Java中实现一个简单链表可以通过创建一个Node类和一个LinkedList类来实现。下面是一个简单链表实现示例: ```java // Node类表示链表中的节点 class Node { int data; Node next; public Node(int data) { this.data = data; this.next = null; } } // LinkedList类表示链表 class LinkedList { Node head; public LinkedList() { this.head = null; } // 在链表末尾添加一个节点 public void add(int data) { Node newNode = new Node(data); if (head == null) { head = newNode; } else { Node current = head; while (current.next != null) { current = current.next; } current.next = newNode; } } // 在链表中查找指定值的节点 public boolean search(int data) { Node current = head; while (current != null) { if (current.data == data) { return true; } current = current.next; } return false; } // 在链表中删除指定值的节点 public void delete(int data) { if (head == null) { return; } if (head.data == data) { head = head.next; return; } Node current = head; while (current.next != null) { if (current.next.data == data) { current.next = current.next.next; return; } current = current.next; } } // 打印链表中的所有节点值 public void print() { Node current = head; while (current != null) { System.out.print(current.data + " "); current = current.next; } System.out.println(); } } // 测试链表的使用 public class Main { public static void main(String[] args) { LinkedList list = new LinkedList(); list.add(1); list.add(2); list.add(3); list.print(); // 输出:1 2 3 System.out.println(list.search(2)); // 输出:true System.out.println(list.search(4)); // 输出:false list.delete(2); list.print(); // 输出:1 3 } } ``` 这是一个简单链表实现,包括添加节点、查找节点、删除节点和打印链表等基本操作。你可以根据需要进行扩展和修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值