课设2--线性表的操作
1 #include "stdio.h" 2 #include "malloc.h" 3 #define datatype int 4 typedef struct node 5 { 6 datatype data; //链表的数据域 7 struct node *next; //链表的指针域 8 } LNode,*LinkList; 9 10 LinkList Creat_LinkList1( ) //头插入法建立单链表算法 11 { 12 int i; 13 int x; 14 int n; 15 LNode *L; 16 L=(LNode *)malloc(sizeof(LNode)); 17 L->next = NULL; 18 printf("输入单链表的长度(头插法):"); 19 scanf("%d",&n); 20 printf("输入元素:"); 21 for(i=0;i<n;i++) 22 { 23 LNode *p; 24 p=(LNode *)malloc(sizeof(LNode)); 25 scanf("%d",&x); 26 p->data = x; 27 p->next = L->next; 28 L->next = p; 29 } 30 return L; 31 } 32 /*按序号查找 Get_Linklist(L,i) 33 在单链表L中查找第i个元素结点,找到返回其指针,否则返回空*/ 34 LNode *Get_LinkList(LinkList L,int i) 35 { 36 LNode *p; 37 int j; 38 if(L->next==NULL) 39 return NULL; 40 if(i<1) 41 return NULL; 42 j=0; 43 p=L; 44 while(p->next!=NULL&&j<i) 45 { 46 p=p->next; 47 j++; 48 } 49 if(j==i) 50 return p; 51 else 52 return NULL; 53 } 54 /*插入运算 Insert_LinkList(L,i,x) 55 在单链表L的第i个位置上插入值为x的元素*/ 56 int Insert_LinkList(LinkList L, int i, datatype x) 57 { 58 LinkList p; 59 LNode *s; 60 int j; 61 p=L; 62 j=1; 63 while(j<i){ 64 p=p->next; 65 j++; 66 } 67 s=(LNode*)malloc(sizeof(LNode)); 68 s->data=x; 69 s->next=p->next; 70 p->next=s; 71 return 1; 72 } 73 /*删除运算:Del_LinkList(L,i) 74 删除单链表L上的第i个数据结点*/ 75 int Del_LinkList(LinkList L,int i) 76 { 77 int j; 78 LinkList p,q; 79 p=L; 80 j=1; 81 while(j<i) 82 { 83 p=p->next; 84 j++; 85 } 86 q=p->next; 87 p->next = p->next->next; 88 free(q); 89 return 1; 90 } 91 void print(LinkList L) //输出单链表 92 { LNode *p=L; 93 p=L->next; 94 while(p->next!=NULL) 95 { printf("%d->",p->data); //输出表中非最后一个元素 96 p=p->next; 97 } 98 printf("%d\n",p->data); //输出表中最后一个元素 99 } 100 void linkcount(LinkList L) 101 { 102 struct a{ 103 int x; 104 int y; 105 }a[100]; 106 int m=0; 107 LinkList p,q; 108 p=(LinkList)malloc(sizeof(LNode)); 109 q=(LinkList)malloc(sizeof(LNode)); 110 while(L->next){ 111 a[m].x=L->next->data; 112 a[m].y=1; 113 p=L->next; 114 while(p->next) 115 { 116 if(L->next->data==p->next->data) 117 { 118 p->next=p->next->next; 119 a[m].y++; 120 } 121 else 122 { 123 p=p->next; 124 } 125 } 126 m++; 127 L=L->next; 128 } 129 printf("该链表中\n"); 130 for(int i=0;i<m;i++){ 131 printf("%d出现%d次\n",a[i].x,a[i].y); 132 } 133 } 134 135 void main() 136 { 137 LinkList H; 138 int i,j,k; 139 datatype x; 140 do 141 { 142 printf("\n\n\n\n"); 143 printf("\t\t\t 链表子系统\n"); 144 printf("\t\t*******************************\n"); 145 printf("\t\t* 1----建 表 *\n"); 146 printf("\t\t* 2----插 入 *\n"); 147 printf("\t\t* 3----删 除 *\n"); 148 printf("\t\t* 4----查 找 *\n"); 149 printf("\t\t* 5----显 示 *\n"); 150 printf("\t\t* 6----计 数 *\n"); 151 printf("\t\t* 0----返 回 *\n"); 152 printf("\t\t*******************************\n"); 153 printf("\t\t 请选择菜单项(0-5):"); 154 scanf("%d",&k);getchar(); 155 if (k==1) 156 H=Creat_LinkList1( ); //用头插入法建立单链表 157 else if (k==2) //在线性表第i位置处插入值为X的元素 158 { 159 printf("\n 请输入插入的位置i和数据X(输入格式:i,X):"); 160 scanf("%d,%d",&i,&x); 161 j=Insert_LinkList(H,i,x); 162 } 163 else if (k==3) 164 { printf("\n 请输入要删除元素的位置i:"); 165 scanf("%d",&i); 166 j=Del_LinkList(H,i); 167 if (j == 1) printf("删除成功!!"); 168 else printf("删除失败!!"); 169 } 170 else if(k==4) //查找线性表中元素值为x的位置 171 { 172 LNode *p; 173 printf("\n 请输入要查找的序号i:"); 174 scanf("%d",&i); 175 p=Get_LinkList(H,i); 176 if (p!=NULL) 177 { print(H);printf("中序号为i的地址是 %d ",p);} 178 else 179 printf("链表中无此序号!!\n"); 180 } 181 else if (k==5) //输出链表 182 { printf("\n表的存储顺序为:"); 183 print(H); 184 } 185 else if (k==6) // 186 { printf("\n计数:"); 187 linkcount(H); 188 } 189 }while(k!=0); 190 }
部分运行结果:
转载于:https://www.cnblogs.com/zongyao/p/9255348.html
课设2--线性表的操作相关推荐
- java实验:计算长方体的体积+线性表的操作
目录 前言 一.计算某长方体或正方体盒子的体积 1.实验思路 2.实验代码 3.实验结果截图 二.线性表 1.实验内容 2.实验思路 3.实验代码 4.实验结果截图 总结 前言 再次进行java实验, ...
- c语言建立26个字母的顺序表,线性表的操作建立一个含26个英文字母的数据元素的线性表并输出该表 爱问知识人...
顺序表操作代码如下:#includeconst int maxsize=1000;struct sequenlist{ char a[maxsize]; int len;};sequenlist se ...
- 链表线性表及其操作c语言代码大全,用链表实现线性表的各种操作(C语言)
#include # include # include //定义节点结构体 typedef struct Node { int data;//数据域 struct Node * pNext;//指针 ...
- 线性表顺序存储的一些操作(初始化,添加,删除)
最近有时间学一些自己想学的,就找来看看数据结构.看的是大话数据结构.之前学数据结构是大一时候,现在看这个还可以,没那时候学的累.但是还是需要进行一些总结,以免自己会忘记. 虽然大部分和书上差不多,但是 ...
- 数据结构—线性表顺序存储插入和删除操作
线性表的操作:1.InitList(*L):初始化操作,建立一个空的线性表L 2.ListEmpty(L):判断线性表是否为空,如果为空,返回true,否则返回false 3.ClearList(*L ...
- 数据结构与算法第二章 线性表、栈、队列、数组、字符串、树、二叉树、哈希表的增删查
03 增删查:掌握数据处理的基本操作,以不变应万变 通过前面课时的学习,相信你已经建立了利用数据结构去完成时空转移的思想.接下来,你需要在理论思想的指导下灵活使用.其实,要想灵活使用数据结构,你需要先 ...
- 数据结构复习-基础、线性表、栈、队列、串
数据结构复习笔记 作者: 收集于网络 第一章:概论 数据:指所有能被输入到计算机中,且能够被计算机识别.存储和加工处理的信息的载体,是计算机操作的对象的总称. 数据元素:数据的基本单位,有时一个数据元 ...
- C语言数据结构-第二章线性表-电大
第二章线性表--内容简介 本章将进入线性结构的学习. 线性结构是最简单.最常用的一种数据结构. 本章将学习线性表的定义.顺序和链式两种存储方式及相应存储结构上的运算实现.通过典型示例训练,掌握线性表的 ...
- 【数据结构(C语言版)系列一】 线性表
最近开始看数据结构,该系列笔记简单记录总结下所学的知识,更详细的推荐博主StrayedKing的数据结构系列,笔记部分也摘抄了博主总结的比较好的内容. 一些基本概念和术语 数据是对客观事物的符号表示, ...
最新文章
- Netflix CEO:入华谈判进展顺利 或很快获牌照
- C++ 虚函数和虚表
- 001. Ansible简介
- mysql 字符设置与修改
- Unity应用架构设计(10)——绕不开的协程和多线程(Part 1)
- Python3 装饰器解析
- scrapy爬虫框架入门实战
- JSP技术之JavaBean
- 重写FileUpload控件让它可以显示上传后的文件名
- absolute和relative的区别
- 信号与系统学习笔记(大纲)
- 乐固、360加固在android 11 上报错,无法安装
- 使用七牛的文档转换服务将PPT转换为JPG
- Vulkan_Shader_Day02—光照(基础光照_Phong Lighting Model)
- 期末前端web大作业:用DIV+CSS技术设计的动漫网站——火影忍者6页 带报告
- 解析单总线协议(1-wire)
- Eclipse MyEclipse 代码提交时,让svn忽略classpath、target、.project
- ICCV2019(Segmentation):ShelfNet-论文解读《ShelfNet for Fast Semantic Segmentation》
- 天融信防火墙重置配置_天融信防火墙认证配置
- 用python中re.sub()替换文件中指定字符串
热门文章
- android fragment 教程,Android app开发中的Fragment入门学习教程
- java biz层创建代码_BIZ层调试方法
- 如何关闭文件服务器的同步,文件服务器同步
- mysql 追加水印_php 使用GD库为页面增加水印示例代码
- 江门计算机职称考试时间,江门职称计算机考试时间
- go 控制台程序 重复启动_WebAssembly 与 go
- python html解析对比_python htmlparse页面解析示例
- php标签class,dede模板标签以及dedetag.class.php模板类使用方法
- 从事前端开发,日常工作中必备的工具有哪些?
- 开课吧:C++开发需要知晓的知识有哪些?