首页 > 其他分享 >数组模拟线性表

数组模拟线性表

时间:2023-11-17 16:14:09浏览次数:28  
标签:last 线性表 int list 数组 data PList 模拟

//使用数组实现线性表
//为了简单起见,表中的数据都是int类型 
#include<stdio.h> 
#include<malloc.h>
//定义线性表数据类型 
typedef struct List{
	int data[100];//最多存放100个int 
	int last;//线性表最后一个元素的下标 
}List,*PList; 

//初始化线性表
 PList MakeEmpty(){
 	//动态创建线性表 
 	PList list = (PList)malloc (sizeof(List));
 	list->last=-1;//表示此时表中没有元素 
 	return list; 
 	
 }
 //根据位序k,返回相应的元素
 int FindKth(int K,PList list){
 	return list->data[K-1];
 	
 } 
 
 //在位序i插入一个新元素X
 void Insert(int X,int i,PList list)
 {
 	//1.从第i-1个元素开始,都往后移动一位(必须是从后面开始移动起)
 	int j;
    for(j=list->last+1;j>=list->data[i-2];j--){
    	list->data[j]=list->data[j-1];
	}
	//2.插入元素
	list->data[i-1]=X; 
	list->last++;
 } 
 
 //删除指定位序i的元素
 void Delete(int i,PList list){
 	//从第i+1个元素开始都往前移动一位
	 int j;
	 for(j=i-1;j<=list->last-1;j++)
	 {
	 	list->data[j]=list->data[j+1];
	  } 
	  list->last--;
 	
 } 
//返回线性表的长度n 
int Length(PList list) {
	return list->last+1;
}

//遍历线性表中的值
void PrintList(PList list)
{
	int p;
	if(list->last==-1)
	{
		printf("线性表为空!");
		
	}else{
		for(p=0;p<=list->last;p++)
	
	{
		printf("%d\n",list->data[p]);
	}	
	}

 } 

int main()
{
	//1.创建一个空的线性表
	PList list = MakeEmpty();
	Insert(2,1,list);
	Insert(3,2,list);
  	Insert(3,3,list);
  	Insert(5,4,list);
  	Delete(1,list);
    Delete(4,list);
	PrintList(list);

//	printf("hello wordld");
	return 0;
}

标签:last,线性表,int,list,数组,data,PList,模拟
From: https://www.cnblogs.com/swtaa/p/17838980.html

相关文章

  • 重写Java中Arrays数组工具类提供的sort()排序函数中的比较器类Comparator的compare()
    排序方法是我们日常开发或者写功能函数,或者实现算法时,常调用的方法。有时甚至,开发人员自己还要写一写排序算法。今天,我们来修改Java官方提供的Arrays工具类中的静态排序sort()方法。反问一下,为什么要重写呢?官方提供的还不够你用?回答:确实不够用,官方默认是对数字,特别是sort比较的......
  • vue2为什么只重写了7个数组方法
    首先看源码//即将要被劫持的数组letarr=[1,2,3];//先把要劫持的方法列出来letmethods=["push","pop","shift","unshift","reverse","sort","splice"];//既然要劫持原型,就要先把原型拿过来letarrayProto=Array.prototy......
  • Java生成随机三维数组图片推流
    生成随机的三维数组frame=np.random.randint(1,254,size=(720,1280,3)).astype(np.uint8)三维数组图片添加时间frame=cv2.putText(frame,datetime.datetime.now().__str__(),(100,100),cv2.FONT_HERSHEY_SIMPLEX,2.0,(255,255......
  • 数组
    一、二分二分法使用条件:1、要有序。2、无重复的数。二分法算细节:二分有不变量和变量。变量的改变要始终遵循不变量的规则。区间的定义就是不变量。要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。三......
  • 线性表A,B顺序存储合并
    7-1线性表A,B顺序存储合并有两张非递增有序的线性表A,B,采用顺序存储结构,两张表合并用c表存,要求C为非递减有序的,然后删除C表中值相同的多余元素。元素类型为整型#include<iostream>#include<cstring>usingnamespacestd;typedefstructf{intdata;f*next;}node,*......
  • jq 数组对象,重复数据进行合并
    var bindif = [{        "ifname": "Ge0/2/1",        "ip": "20.1.1.1",        "mask": "255.255.255.0"    }, {        "ifname": "Ge0/2/5",        "ip6addr": &q......
  • 数组下标运算符[]
    数组表示一块连续的特定类型对象组成的空间结构,指针通俗指代某个对象的地址(其实包含了地址和地址上对象大小两层意思),数组和指针不能等同。也许唯一的联系是,数组的运算采用指针的方式实现。所以当我们定义一个数组array时,数组array在大多数表达式中会转换成首元素的指针。而很多......
  • 汇编-SIZEOF返回数组字节总数
     SIZEOF操作符的返回值等于LENGTHOF与TYPE的返回值的乘积.386.modelflat,stdcall.stack4096ExitProcessPROTO,dwExitCode:DWORD.dataintArrayWORD32DUP(0).codemainPROCmoveax,SIZEOFintArray;EAX = 00000040h=64INV......
  • 十、数组
    十、数组1、数组的概念1)引出数组需求:学校为了统计学生的信息,需要设计一个程序,要求如下,一共有十个学员,要求依次输入各位学员的学号,并将其打印出来。#include<iostream>intmain(){intstudentId1,studentId2,studentId3,studentId4,studentId5;std::cin>>s......
  • 2023年11月16日模拟赛
    更好的观看在我的博客总结今天要结束了哈哈。今天早上模拟,本来是信心赛的,结果由于大家的“出色表现”,标题不叫信心赛了哈哈。今天考的还行,不是很难。简单说一下,也要下课了,noiprp++!题解先简单评价一下本次考试。T1std是\(O(N)\)的,带一个\(\log\)的常数小也能过,还是很棒......