数据结构 单链表 C语言实现

这篇博客详细介绍了如何使用C语言来实现单链表数据结构,包括相关的代码实现。
摘要由CSDN通过智能技术生成

单链表

单链表 顺序存储线性表
分配方式 分散存储 集中存储
时间性能 查找O(n) 插入删除O(1) 查找O(1) 插入删除O(n)
空间性能 无需分配空间,元素可以无限扩充 分配空间,元素个数有限

c语言代码实现(单链表)

//
//  main.c
//  线性表链式存储结构
//
//  Created by Kinble Wu on 2020/3/2.
//  Copyright © 2020 Kinble Wu. All rights reserved.
//
#include "include.h"

//定义节点数据类型名称
typedef int ElemType;

//定义节点数据结构
typedef struct Node{
   
    ElemType data;  //数据域
    struct Node* next;  //指针域
}Node;

//定义节点指针
typedef struct Node* LinkList;

//获取链表中第pos个元素
int GetElem(LinkList list,int pos){
   
    LinkList p;
    ElemType *e;
    p = list->next;
    int j = 1;

    //进入循环,直到j==pos时,退出循环
    while (p&&j<pos) {
   
        p = p->next;
        ++j;
    }
    //判断,当到链表尾部或者j大于pos时,返回失败
    if(!p||j>pos){
   
      
数据结构中的单链表是一种线性的数据结构,每个节点包含两个部分:数据域用于存储数据,指针域(或称为链接)指向下一个节点。以下是C语言单链表的一些基本操作: 1. **创建链表**: - 初始化链表头节点通常设为`NULL`。 ```c struct Node { int data; struct Node* next; }; struct Node* head = NULL; // 空链表 ``` 2. **插入节点**: - 可以在链表头部、尾部或指定位置插入新节点。 ```c void insertAtBegin(struct Node** head, int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->next = *head; *head = newNode; } ``` 3. **删除节点**: - 删除某个节点需要记录前一个节点,以便更新其`next`指针。 ```c void deleteNode(struct Node** head, int key) { struct Node* temp = *head, *prev = NULL; if (temp && temp->data == key) { *head = temp->next; // 如果头结点要删除 free(temp); return; } while (temp && temp->data != key) { prev = temp; temp = temp->next; } if (temp == NULL) return; // 没找到要删除的节点 prev->next = temp->next; free(temp); // 释放内存 } ``` 4. **查找节点**: ```c struct Node* search(struct Node* head, int key) { struct Node* current = head; while (current != NULL) { if (current->data == key) return current; current = current->next; } return NULL; // 找不到返回NULL } ``` 5. **遍历链表**: ```c void printList(struct Node* node) { while (node != NULL) { printf("%d ", node->data); node = node->next; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值