#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef int ElemType;typedef struct LNode{ElemType data;//数据域struct LNode *next;//指针域
}LinkList;
//初始化单链表
int InitList(LinkList *L){// L=(LinkList *)malloc(sizeof(LinkList));if (L==NULL) return 0;//分配失败L->next=NULL;//空表,类似于顺序表n=0printf("初始化完成\n");
}
//插入操作
int ListInsert(LinkList *L,int j,ElemType item){if(j<1){return 0;}int i=0;//控制temp指向LinkList *temp;//表示链表temp=L;//指向L//使中间变量指向目标结点while(temp!=NULL && i<j-1){temp=temp->next;i++;}if( temp==NULL ) return 0;//temp下一节点为空(i值过大,不合法),返回struct LNode *s;//表示结点s=(struct LNode *)malloc(sizeof(struct LNode));//分配内存空间s->next=temp->next;//s后续结点为temp当前结点后续结点s->data=item;//s当前值为目标值temp->next=s;//temp下一节点指向sprintf("insert successfully\n");return 1;
}
//删除操作
int ListDelect(LinkList *L,int j){LinkList *temp=L;//指向头结点struct LNode *s;//规范int k=0;while(k<j-1&&temp!=NULL){k++;temp=temp->next;}if (temp->next==NULL) return 0;//目标为空非法操作s=temp->next;//将目标赋值给stemp->next=temp->next->next;//跳过目标free(s);//释放存放目标的sprintf("delect successfully\n");return 1;
}
//按值查找
struct LNode *LocateELem(LinkList *L,ElemType item){LinkList *temp=L;//中间变量来遍历//开始查找while(temp->data!=item && temp->next!=NULL) temp=temp->next;return temp;//返回目标结点
}
//按位查找,返回目标结点
struct LNode *GetElem(LinkList *L,int j){if(j<1) return NULL;//短路提前判断LinkList *temp=L;//中间变量int k=0;//控制链表循环次数while(temp!=NULL&&k<j){//控制短路现象temp=temp->next;temp->data=k+1;k++;}return temp;//返回结点
}
//头插法创建链表
int HeadCreateList(LinkList *L,ElemType k){if(k<1) return 0;LinkList *temp;if (temp==NULL) return 0;//分配失败int i=0;while(i<k){temp=(LinkList *)malloc(sizeof(LinkList));temp->data=i;//交替指向添加元素temp->next=L->next;//链表循环赋值L->next=temp;i++;}printf("Created successfully\n");
}
//尾插法创建链表
int FootCreatList(LinkList *L,ElemType k){//非法操作或创建失败if(k<0) return 0;LinkList *temp;int i=1;while(i<=k){temp=(LinkList *)malloc(sizeof(LinkList));if(temp==NULL) return 0;temp->data=i;L->next=temp;L=L->next;//链表位置始终保持在最后i++;}printf("Created successfully\n");
}
//打印操作
void PrintList(LinkList *L){LinkList *temp=L;temp=temp->next;//从头结点指向首结点while(temp!=NULL){printf("%d\n",temp->data);temp=temp->next;}printf("print successfully\n");
}
int main(){LinkList *L;//声明一个指向单链表的带头指针LL=(LinkList *)malloc(sizeof(LinkList));InitList(L);//初始化HeadCreateList(L,10);//尾插法创建元素PrintList(L);ListInsert(L,3,16);PrintList(L);ListDelect(L,7);PrintList(L);return 0;
}

C语言单链表定义及各类操作相关推荐

  1. c语言用链表的方式实现多项式加减,如何实现C语言单链表多项式相加的操作

    #include#pragma warning(disable:4996)//兼容scanf typedef struct node { int coef; int expon; struct nod ...

  2. C语言一趟冒泡交换最小值,C语言单链表冒泡排序为啥以下代码实现不了?

    struct node *sort(struct node *head)/*排序*/ { struct node *p,*q; struct node *temp; for(p=head;p!=NUL ...

  3. c语言单链表功能,[数据结构]单链表(C语言)的各种功能

    06-03阅读200,000 + 链表是一种常见的基本数据结构,在此充分利用了结构指针. 链表可以动态存储和分配,即链表是一个功能非常强大的数组. 他可以在节点中定义多种数据类型,并可以根据需要随意添 ...

  4. C语言单链表基本操作总结

    C语言单链表基本操作     本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...

  5. C语言单链表代码实现

    C语言单链表代码实现 一.头文件.常量以及自定义数据结构 #include<stdio.h> #include<malloc.h> #include<stdlib.h&g ...

  6. C语言 单链表通讯录基础版实现,保证看完都直呼easy

    C语言 单链表实现通讯录基础版,保证看完都大呼简单! --------------------------------- 首先在写通讯录之前,必须明确我们的需求: 因为是基础版,我在这里暂时只实现以下 ...

  7. 单链表插入、删除操作单步解析(十三)

    1.单链表定义 每个结点包含数据域和指针域,指针域存储下一个结点的地址.  2.插入操作 在第i个结点前面,插入一个e结点. 分析: <1>.s->next = p->next ...

  8. C语言单链表,能直接运行的代码!

    C语言单链表,实现增删改查 不废话 直接上代码,COPY就能运行 #include <stdio.h> #include <stdlib.h> /** *定义数据元素 */ t ...

  9. 头插法逆置单向链表c语言,单链表的逆置(头插法和就地逆置)

    今天课间的时候偶然看到了一个面试题:单链表的逆置,看了题解感觉乖乖的,貌似和以前看的版本不搭,于是重新进行了一番探究 单链表的逆置分为两种方法:头插法和就地逆置法,这两种方法虽然都能够达到逆置的效果, ...

最新文章

  1. 【C++】Google C++编码规范(三):智能指针
  2. innodb表空间结构
  3. 《京东峰值系统设计》读后感
  4. python拿什么做可视化界面好-手把手教你用Python做个可视化的“剪刀石头布”小游戏...
  5. C/Cpp / #define
  6. oracle中case when关键字的使用
  7. aes离线解密工具_如何在Python中解密OpenSSL AES加密文件?
  8. php发送邮件时间间隔,在使用phpmailer群发邮件时如何设置发送的时间间隔?
  9. 虚拟主机-多域名多目录使用方法
  10. 记录CodeForces第一次比赛经历
  11. 2D空间中求线段与圆的交点
  12. java异常的基本概念和处理流程
  13. UVA1292-----Strategic game-----树形DP解决树上的最小点覆盖问题
  14. 一个很烂的学生成绩管理系统
  15. CAN 通信协议文档集锦
  16. word插入公式为灰色解决办法
  17. 服务器显示无vga电缆怎么回事,无vga电缆是什么意思
  18. 【论文笔记】Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID
  19. Centos7.2 eclipse使用CGAL求主骨架
  20. 推荐一个制作卡通头像的网站(超强)

热门文章

  1. php 5.4 aws,亚马逊AWS.EC2:Ubuntu安装php与apache环境
  2. mysql临时关闭查询日志_mysql故障排错临时打开通用日志和慢查询日志
  3. redux异步action_【第1586期】基于Redux/Vuex/MobX等库的通用化状态OOP
  4. c语言printf输出中文报错,printf输出中文后还带有数字是怎么回事?
  5. java hibernate 多对多_hibernate 多对多映射配置详解
  6. u盘pe无人值守linux,从U盘无人值守安装linux操作系统(纯实践笔记
  7. 数据分析师能用到mysql_浅谈数据分析师的必备技能SQL
  8. 使用oracle sql profile固定执行计划
  9. Linux 内核参数及Oracle相关参数调整
  10. retrofit与rxjava使用