头插法建立单链表(带头结点和不带头结点)

这篇博客详细介绍了如何使用头插法建立单链表,包括带头结点和不带头结点的情况。通过示例代码展示了从输入数据到创建链表的过程,以及如何遍历打印链表内容。
摘要由CSDN通过智能技术生成

头插法建立单链表(带头结点)

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

typedef struct LNode{        //定义单链表结点类型 
    int data;                         //每个结点存放一个数据元素 
    struct LNode *next;        //指针指向下一个结点 
}LNode,*LinkList;

//初始化一个单链表(带头结点) 
bool InitList(LinkList &L){
    L =(LNode *)malloc(sizeof(LNode)); //分配一个头结点 
     if(L==NULL){
        return false;
        } 
    L->next = NULL;        //头结点之后暂时还没有结点
    
    return true; 

int main(){
    LinkList List_HeadInsert(LinkList &L);
    LinkList L;            //声明一个指向单链表的指针
    InitList(L);         //初始化一个空表 

    LNode *p;
    p=List_HeadInsert(L);
    while(p->next!=NULL){
        p=p->next;
        printf("%d\n",p->data);
      

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是删除单链表第i个结点的C语言代码,其中假设单链表头结点为head: ```c #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; } Node; // 头插入法建立单链表 Node* createList(int n) { Node* head = (Node*)malloc(sizeof(Node)); head->next = NULL; for (int i = 0; i < n; i++) { Node* newNode = (Node*)malloc(sizeof(Node)); printf("请输入第%d个结点的值:", i + 1); scanf("%d", &(newNode->data)); newNode->next = head->next; head->next = newNode; } return head; } // 删除第i个结点 void deleteNode(Node* head, int i) { Node* p = head; int j = 0; while (p && j < i - 1) { p = p->next; j++; } if (!p || !p->next) return; // 第i个结点不存在 Node* delNode = p->next; p->next = delNode->next; free(delNode); } // 打印单链表 void printList(Node* head) { Node* p = head->next; while (p) { printf("%d ", p->data); p = p->next; } printf("\n"); } int main() { int n, i; printf("请输入单链表的长度:"); scanf("%d", &n); Node* head = createList(n); printf("请输入要删除的结点位置:"); scanf("%d", &i); deleteNode(head, i); printf("删除后的单链表为:"); printList(head); return 0; } ``` 代码解释: 1. `createList()`函数使用头插入法建立单链表,返回头结点指针。 2. `deleteNode()`函数接受一个头结点指针和一个整数i,表示要删除第i个结点。首先遍历单链表找到第i-1个结点,然后将其next指针指向第i+1个结点,最后释放第i个结点的内存空间。 3. `printList()`函数用于打印单链表,从头结点的next开始遍历输出每个结点的值。 4. `main()`函数中读入单链表的长度和要删除的结点位置,然后调用`createList()`函数建立单链表,调用`deleteNode()`函数删除第i个结点,最后调用`printList()`函数打印删除后的单链表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值