实验目的:

1.创建一个带头结点的单链表。

2.插入元素操作:将新元素x插入到单链表head的头部、将新元素x插入到单链表head的尾部、将新元素x插入到单链表head中第i个元素之后。

3.删除元素运算:删除单链表head中值为x的元素。

4.输出带头结点的单链表。

初始化链表:

使用malloc分配空间给*head、*p指针,创立一个带头结点的指针,然后定义一个用来开辟新节点的指针*s,使用malloc函数给他分配空间,并给用s->data给新结点的数值域赋值,再使用p->next=s将新结点连接到p的后面。

求表长:

定义一个整数变量i=0作为计数器,当p不等于NULL时,p指向后一个结点,同时n增加1,知道p等于NULL,跳出循环,返回n的值即为链表的长度。

查找元素:

从单链表的头结点开始,顺序逐个往后搜素,直到找到第i个结点,最后返回该结点的元素。

删除:

q指向要删除的那个元素所在结点的,p指向前驱结点,使用p->next=q->next语句删除。

头插法:

先指针*s为开辟一个新空间,将头结点head->next赋值给s->next;L->next赋值为s。

尾插法:

同样先指针*s为开辟一个新空间,先用while循环将p指到最后一个结点,使用p->next=s; s->next=NULL将新开辟的结点连接到尾结点。

退出程序:

使用exit(1)函数即可。

部分源代码如下:

/* Note:Your choice is C IDE */
#include "stdio.h"
#include<malloc.h>
#include<stdlib.h>
#define ElemType int
typedef struct node{ElemType data;struct node *next;
}slink ;int i;int l;int v,x,t,y,u;
slink *creslink(){slink *head;slink *p;slink *s;int n=3;int i;printf("开始时先初始化链表了,请输入待会要赋值的五个值:\n");p=head=(slink *)malloc(sizeof(slink));for(i=1;i<=n;i++){s=(slink *)malloc(sizeof(slink));scanf("%d",&s->data);p->next=s;p=s;}p->next=NULL;return head;
}
int insert(slink *head,int i,ElemType x){//任意位置插入slink *p;slink *q;int j;if(i<1){    return 0;}p=head;j=0;while(p!=NULL&&j<i-1){p=p->next;j++;}if(p==NULL){return 0;}q=(slink *)malloc(sizeof(slink));q->data=x;q->next=p->next;p->next=q;printf("%d",x);return 1;}
void toucha(slink *head){slink *s;int i;printf("请输入要插入的元素");for(i=1;i<=3;i++){s=(slink *)malloc(sizeof(slink));scanf("%d",&s->data);s->next=head->next;head->next=s;}
}
void weicha(slink *head){printf("请输入要插入的元素");for(i=1;i<=3;i++){slink *p,*s;s=(slink *)malloc(sizeof(slink));scanf("%d",&s->data);p=head;while(p->next!=NULL){p=p->next;}p->next=s;s->next=NULL;}}

数据结构之C语言单链表操作相关推荐

  1. 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)

    数据结构上机测试2-1:单链表操作A Time Limit: 1000ms   Memory limit: 4096K  有疑问?点这里^_^ 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头 ...

  2. 不带头结点的C语言单链表操作,头插法及尾插法

    接上篇带头结点的单链表操作,不带头节点真的比带头结点的麻烦好多,主要是我自己指针指的有点晕,搞了这几天的不带头结点的单链表,算是弄清楚指针的玩法了..老样子上代码. # include "s ...

  3. 数据结构上机实验:单链表操作

    #include <iostream> #include <malloc.h> using namespace std;typedef struct Node {char c; ...

  4. 数据结构————倒置带头结点单链表操作讲解

    我们先来实现带头单链表的基本操作: 头文件: #include<stdio.h> #include<assert.h> #include<stdlib.h> typ ...

  5. 数据结构上机测试2-2:单链表操作B

    题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个). 输入 第一行输入元素个数n: 第二行输入n个整数. 输出 第一行输出初始链表 ...

  6. 数据结构上机测试2-1:单链表操作A

    题目描述 输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除.分别输出建立的初始单链表和完成删除后的单链表. 输入 第一行输入数据个数n: ...

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

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

  8. 数据结构与算法:单链表(利用万能指针实现对任意类型数据进行操作)

    前言 C语言的指针真的很强大,万能指针更强大,可以指向任意类型的数据.在上篇博客 数据结构与算法:单链表(超详细实现)中用C语言实现了单链表的相关算法,不过却有局限性 只能针对某一种数据类型还是不够强 ...

  9. 单链表操作实现getelem_c语言实现--带头结点单链表操作

    可能是顺序表研究的细致了一点,单链表操作一下子就实现了.这里先实现带头结点的单链表操作. 大概有以下知识点. 1;结点:结点就是单链表中研究的数据元素,结点中存储数据的部分称为数据域,存储直接后继地址 ...

最新文章

  1. Python使用过滤器(filter)进行图像模糊处理
  2. FTP错误 [ftp: connect: No route to host] 解决方法
  3. UA SIE545 优化理论基础1 例题3 凸多面体的表示与线性规划
  4. 《Science》杂志:机器学习究竟将如何影响人类未来的工作? 2018-01-11 Smiletalker AI科技评论 AI 科技评论按:人工智能、机器学习相关技术已经多次刷新了人们对于「计算机能
  5. 学计算机的男孩子怎么追女孩子,男孩子追女孩子的套路,原来有这么多,快来学一学...
  6. EMVTag系列3《持卡人基本信息数据》
  7. JEECG支付服务窗专题 - 支付窗激活开发者模式
  8. 1006: 组合的输出(dfs的一种用法)(与排列类似)
  9. 解决DELL服务器每次开机提示F1F2,需要F1才可以进系统的方法
  10. Android测试驱动开发实践2
  11. Web调用海康威视摄像头
  12. 用优盘装系统看不到计算机本身的硬盘,如果U盘安装系统找不到硬盘怎么办
  13. 计算机网络思维导图图片
  14. 对比性句子sentiment analysis
  15. DOM是什么?有什么用处?js与DOM啥关系?
  16. 从街机到抓娃娃机,硬币经济也将被移动支付取代?
  17. 想用QQ小程序流量主广告赚钱,你需要知道的知识!
  18. 3 有限马尔可夫决策过程(Finite Markov Decision Processes)
  19. 再次强调完成的定义(DoD)
  20. c++ 解析纯真IP数据库qqwry

热门文章

  1. Java设计模式及应用场景之《状态模式》
  2. pygame飞机大战游戏背景实现
  3. C语言编程入门——顺序查找
  4. Linux 系统性能评测基准系统配置及其原理
  5. lingo3d学习之路
  6. 静态链接库、动态链接库使用方法
  7. Web 文本挖掘(TextMining)技术
  8. Cocos2d-x 手机游戏《疯狂的蝌蚪》资源 “开源” win32+安德鲁斯+iOS三合一
  9. ASP.NET Web网站HTTP错误 403.14(已解决)
  10. ASP.NET 项目发布到IIS上报:HTTP 错误 403.14 - Forbidden 错误的解决方案