单链表,随机数(完整版)

您所在的位置:网站首页 有两个单链表存放两个整数序列怎么办 单链表,随机数(完整版)

单链表,随机数(完整版)

2024-07-12 15:03:48| 来源: 网络整理| 查看: 265

(1)定义单链表link2,产生10个1-100的随机整数,通过插入函数依次保存到带头结点的Link2中,并输出插入后的 link2元素序列。

(2)查找link2中第i个元素〈i由用户输入),输出第i个元素的值。

(3)调用删除函数删除 link2中第i个元素(i由用户输入),删除成功后输出删除后的link2的元素序列,删除失败则显示不存在这个数。

备注:产生随机数的方法srand((int)time(0)),rand();(随机函数所在头文件,时间函数所在头文件)  

#include #include int ch,c;//ch选择变量,c是否继续的变量 typedef int elemtype; typedef struct node { int date; struct node *next; }Linklist; //初始化带头结点的单链表 Linklist *initlist()//初始化带头结点的单链表 { Linklist *h; h=(Linklist *)malloc(sizeof(Linklist)); h->next=NULL; return h; } Linklist *getnum(Linklist *h,int c)//查找第i个结点 { Linklist *p=h; int j=0; while(p->next&&jnext; j++; } if(c==j)return p; else return NULL; } void intput(Linklist *h,int i,int x) { Linklist *p,*s; p=getnum(h,i-1);//找到插入位置的前驱结点指针 s=(Linklist *)malloc(sizeof(Linklist));//给新节点分配空间 s->date=x;//x存入新结点的数据域 s->next=p->next; p->next=s; } void printlinklist(Linklist *h)//输出链表 { Linklist *p=h->next; while(p!=NULL)//当前结点不为空 { printf("%-4d",p->date);//输出当前结点的数据 p=p->next;//移动指针指向下一个结点 } } void find(Linklist *h) { printf("\n\n\t\t\t\t\t +---------------查找信息选择--------------+\n"); printf("\t\t\t\t\t | |\n"); printf("\t\t\t\t\t | 1--按序号查找 2--按值查找 |\n"); printf("\t\t\t\t\t +-----------------------------------------+\n"); while(1) { printf("\t\t\t\t\t请输入你查找的选择:(1-2)"); scanf("%d",&ch); switch(ch) { case 1:find1(h);break; case 2:find2(h);break; default:printf("\t\t\t\t\t请输入有效数字!"); }getchar(); printf("\n\t\t\t\t\t是否继续:是请输入'Y'或'y',否请输入'N'或'n':"); c=getchar(); printf("\t\t\t\t\t--------------------------------------------\n"); if(c=='Y'||c=='y')continue; else if(c=='N'||c=='n')break; } } int find1(Linklist *h) { Linklist *p; int j=0,x; p=h->next; printf("\t\t\t\t\t请输入要查找元素的序号:"); scanf("%d",&x); if(xnext!=NULL&&jnext;//不是目标结点且有后继结点时继续查找 j++; } if(x==j)//找到目标结点,进行输出 printf("\t\t\t\t\t找到第%d个元素为: %d\n",x, p->date); else printf("\t\t\t\t\t没有找到第%d个元素! \n",x); return 0; } void find2(Linklist *h) { int i=1,f; Linklist *p; p=h->next;//指针指向首结点 printf("\t\t\t\t\t请输入要查找的数:"); scanf("%d",&f); while(p!=NULL) if(p->date!=f) { p=p->next;//取下一个结点,继续查找 i++; } else break;//找到,结束循环,进行输出 if(p!=NULL) printf("\t\t\t\t\t已找到,位置是%d\n",i); else printf("\t\t\t\t\t未找到\n"); } void del(Linklist *h) { printf("\n\n\t\t\t\t\t +---------------删除信息选择--------------+\n"); printf("\t\t\t\t\t | |\n"); printf("\t\t\t\t\t | 3--按序号删除 4--按值删除 |\n"); printf("\t\t\t\t\t +-----------------------------------------+\n"); while(1) { printf("\n\t\t\t\t\t请输入你删除的选择:(3-4)"); scanf("%d",&ch); switch(ch) { case 3:del3(h);break; case 4:del4(h);break; default:printf("\t\t\t\t\t请输入有效数字!"); }getchar(); printf("\n\t\t\t\t\t是否继续:是请输入'Y'或'y',否请输入'N'或'n':"); c=getchar(); printf("\t\t\t\t\t--------------------------------------------\n"); if(c=='Y'||c=='y')continue; else if(c=='N'||c=='n')break; } } int del3(Linklist *h) { Linklist *q,*p=h; int d,j=1; printf("\n\t\t\t\t\t请输入要删除的元素的位置:"); scanf("%d",&d); if(dnext!=NULL&&jnext; j++; } q=p->next; p->next=q->next; free(q);//清空该结点 printf("\t\t\t\t\t删除成功!\n"); printf("\t\t\t\t\t删除结点后单链表:\n"); printf("\t\t\t\t\t"); printlinklist(h); if(p=p->next==NULL) { printf("\t\t\t\t\t删除结点位置不合理!"); return NULL; } } int del4(Linklist *h) { Linklist *q,*p=h; int d; printf("\n\t\t\t\t\t请输入要删除的元素:"); scanf("%d",&d); while(p->next!=NULL)//若p有后继结点 { if(p->next->date==d) { q=p->next;//q标记被删除的节点 p->next=q->next; free(q); h->date--; break; } p=p->next ;//不满足if继续指针后移 } printf("\t\t\t\t\t删除成功!\n"); printf("\t\t\t\t\t删除结点后单链表:\n"); printf("\t\t\t\t\t"); printlinklist(h); if(p->next==NULL) { printf("Not Find! \n"); return 0; } } int main() { int e,i; Linklist *head; head=initlist();//初始化单链表 srand((int)time(NULL)); for(i=1;i


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭