`
jaychang
  • 浏览: 735103 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

单链表的增删查改

阅读更多
#include<stdio.h>
#include<stdlib.h>

typedef struct Node{
  char ch;
  struct Node * next;
}Node,*Linklist;

int num;

//查找给定值的结点,返回结点指针
Node * findValue(char c,Node * head){
  Node * p=head->next;
  while(p->next!=NULL){  
    if(p->ch==c)
      return p;
     else
       p=p->next;
   }
   return head;
}

//查找给定位置的结点的值
char findIndex_Value(Node * head,int index){
  int count=0;
  Node * p=head->next;
  for(int i=1;i<index;i++){
    p=p->next;
  }
  return p->ch;
}

//在给定位置插入一个结点
void insertP(Node *head,int index){
  if(index<0||index>4+1){
    printf("插入操作非法\n");
  }else{
    Node *p=head;
    index--;
    while(p->next!=NULL&&index!=0){
      p=p->next;
      index--;
    }
    Node *s=(Node *)malloc(sizeof(Node));
    s->ch='j';
    s->next=p->next;
    p->next=s;
  }
}

//修改给定位置的结点值
void setP(Node *head,int index){
  if(index<0||index>4+1){
    printf("操作非法\n");
  }else{
      Node *p=head;
      index--;
      while(p->next!=NULL&&index!=0){
        p=p->next;
        index--;
      }
      p->next->ch='g';
   }
}

//删除给定位置的结点
void deleteP(Node *head,int index){
  if(index<0||index>4){
    printf("操作非法\n");
  }else{
   Node *p=head;
   index--;
   while(p->next!=NULL&&index!=0)
   {
    p=p->next;
    index--;
   }
   Node *s=p->next;
   p->next=s->next;
   s->next=NULL;
   free(s);
}
}

//建立一个单链表
Node * createLinkList(int num){
  char c;
  Linklist L=(Linklist)(malloc)(sizeof(Linklist));
  L->ch=NULL;
  L->next=NULL;
  Node * r=L;
  Node *s;
  for(int i=0;i<num;i++){
     s=(Node *)malloc(sizeof(Node));
     if(s==NULL){
      printf("不能分配空间\n");
      exit(0);
     }else{
     //printf("请输入第%d个节点值\n",i+1);
       switch(i){
         case 0:s->ch='a';break;
         case 1:s->ch='b';break;
         case 2:s->ch='c';break;
         case 3:s->ch='d';break;
       }
       //s->ch='a';
       r->next=s;
       r=s;
      }
  }
  r->next=NULL;
  return L;  
}

//输出单链表
void procOutput(Node * L){
  Node * p=L->next;
  while(p->next!=NULL){
     printf("%c ",p->ch);
     p=p->next;
  }
  printf("\n");
}



int main(){
  Linklist L=createLinkList(5);
  Node * p1=findValue('c',L);
  printf("%c\n",p1->ch);
  char cha=findIndex_Value(L,3);
  printf("%c\n",cha);
  deleteP(L,3);
  procOutput(L);
  insertP(L,3);
  procOutput(L);
  setP(L,3);
  procOutput(L);
  return 0;
}
 
分享到:
评论

相关推荐

    C语言数据结构单链表的增删查改

    C语言数据结构单链表的增删查改

    C++数据结构代码——单链表的增删查改功能

    在深入探讨C++中单链表的增删查改功能之前,我们首先应当明确单链表的基本概念。单链表是一种线性数据结构,其中的元素由节点组成,每个节点包含两部分:一部分用于存储数据,另一部分则是一个指针,指向列表中的下...

    数据结构与算法之单链表的增删查改

    总结,单链表是理解和掌握数据结构与算法的基础,熟练运用增删查改操作对于编写高效代码至关重要。在实际应用中,根据具体需求选择合适的数据结构和操作方法,能有效提升程序的性能。通过不断实践和学习,你可以更好...

    C语言实现单链表的增删查改

    本篇文章将深入探讨如何用C语言实现单链表的增、删、查、改四种基本操作。 ### 1. 单链表的基本结构 首先,我们需要定义一个链表节点结构体,如下所示: ```c typedef struct Node { int data; // 数据域,这里...

    自己写的单链表的增删查改

    在这个项目中,我们关注的是自己编写的单链表实现,包括增、删、查、改这四个基本操作。这些操作是单链表操作的核心,也是理解和掌握链表数据结构的关键。 首先,我们来了解一下单链表的基本概念。单链表由一系列...

    单链表 ,增删查改,视频课程,截图分享,

    "单链表知识点详解" 单链表是一种基本的数据结构,在编程语言中应用广泛。单链表的主要特点是每个节点只包含一个指针,指向下一个节点。单链表的优点是插入、删除节点时只需要改变相应的指针,时间复杂度低于数组。...

    单链表操作sigle-list.h

    单链表增删查改

    基于java的单链表增、删、改、查、去重操作

    在给定的“基于java的单链表增、删、改、查、去重操作”主题中,我们将详细讨论如何实现这些基本功能以及链表的去重操作。 1. **链表节点的定义**: 首先,我们需要创建一个表示链表节点的类,它通常包含两个属性...

    C#实现单链表的增删改查

    在本文中,我们将深入探讨如何使用C#编程语言实现单链表,并结合图形用户界面(GUI)来实现增、删、改、查等基本操作。单链表是一种基础的数据结构,它由一系列节点组成,每个节点包含数据以及指向下一个节点的引用...

    顺序表 链表 双链表的增删查改操作及链表逆置等常用线性表算法.zip

    在本压缩包中,我们重点关注了三种类型的线性表:顺序表、链表和双链表,以及它们的增删查改操作和链表逆置等常见算法。 顺序表是一种最简单的线性表实现,它在内存中是连续存储的,可以通过数组来表示。对于顺序表...

    数据结构顺序表和链表(超详细)

    此压缩包为1、无头+单向+非循环链表增删查改实现// 动态申请一个结点// 单链表打印// 单链表尾插// 单链表的头插// 单链表的尾删// 单链表头删// 单链表查找// 单链表在pos位置之后插入x// 单链表删除pos位置之后的...

    C语言-数据结构课程设计+实验报告

    基于数据结构中顺序表和链表的实验设计,包括顺序表和链表的增删查改的实现及相关的应用案例。 编译器:C-Free 5.0 语言:C语言 主要内容: 1.顺序表 (1)要求从文件中读取数据,进行基本的增删改查,简单的排序...

    航班管理系统(2020-06-17).zip

    接着会有相应的增删查改等关于一系列单链表的基本操作,这里最主要的就是实现“安全”,这个实现是通过一层层的遍历和判读实现的,然后就是释放动态分配的内存空间,并且将航班信息表存入文本文件中,

    单链表 快速查找 VC++

    接着,我们可以创建一个链表类来管理链表的增删查改操作: ```cpp class LinkedList { private: ListNode* head; public: LinkedList() : head(nullptr) {} // 插入节点 void insert(int val) { ListNode* ...

    精选_毕业设计_基于C语言的单链表客房管理系统_完整源码

    通过链表的操作,可以实现对客房的增删查改,满足系统的动态管理需求。 首先,我们需要定义链表节点的结构体。在这个结构体中,我们可以定义房间号(如int room_number)、房间类型(如char room_type)、入住状态...

    基于C语言的职工信息管理系统

    本系统——“基于C语言的职工信息管理系统”采用简洁高效的C语言编写,利用单链表数据结构实现了员工信息的增删查改功能,并能将数据持久化存储在本地,便于日常操作和数据备份。 一、C语言基础 C语言是一种强大的...

    学生信息单链表模板类

    通过这个模板类,我们可以高效地进行学生信息的增删查改操作,同时,它也为理解和应用链表提供了实践平台。 单链表是一种线性数据结构,每个元素(节点)包含两部分:数据域和指针域。数据域存储实际信息,如学生的...

    studentlist.rar_studentlist_单链表

    总的来说,"studentlist.rar_studentlist_单链表"项目是一个很好的实践示例,它演示了如何在C++中使用单链表来管理学生数据,包括基本的增删查改操作。这有助于加深对数据结构的理解,提升编程能力。通过分析和实践...

    仓库管理系统,基于单链表的应用,应用范围广泛,纯手工代码

    - **用户接口**:提供友好的界面,让用户输入货物信息,执行增删查改操作。 - **数据库层**:使用单链表存储货物信息,实现数据的持久化。 - **业务逻辑**:实现库存控制策略,如库存预警、先进先出(FIFO)原则...

    C++课程设计 单链表——学生信息管理系统.pdf

    主要功能包括链表的建立、学生信息的增删查改以及友好的欢迎选择界面。 在系统设计中,采用了Switch选择结构来处理用户输入,通过链表实现学生信息的存储和操作。学生信息被封装在Inform类中,包含姓名、学号、性别...

Global site tag (gtag.js) - Google Analytics