栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构复习ya--线性表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构复习ya--线性表

一.顺序表

// 1)顺序表的基本操作:
typedef struct{
	int number;		//学号
	char name[20];	//姓名 
}ElemType;

typedef struct{
	ElemType data[Max];
	int length;
	int listsize;
}Sqlist;
//	初始化
int initSqlist(Sqlist *L){
	L->length=0;
	L->listsize=Max;
	return 1;
} 
//	插入
int insertSqlist(Sqlist *L,int i,ElemType e){
	int k;
	if(i<1||i>L->length||L->length>=L->listsize){
		printf("插入失败n");
		return 0;
	}
	else{
		for(k=L->length-1;k>=i-1;k--)
			L->data[k+1]=L->data[k];
		L->data[i-1]=e;
		L->length=L->length+1;
		return 1;
	}
}
//	创建
int creatSqlist(Sqlist *L){
	int k,i;
	ElemType e;
	initSqlist(L);
	printf("请输入创建信息数目n");
	scanf("%d",&k);
	for(i=0;iL->length||L->length==0){
		printf("删除失败n");
		return 0;
	}
	else{
		for(k=i-1;klength-1;k++)
			L->data[k]=L->data[k+1];
		L->length--;
		return 1;		
	}
}
//	查找
int locationSqlist(Sqlist L,char a[]){
	int i;
	if(L.length==0){
		printf("空表,查找失败n");
		return 0;
	}
	else{
		for(i=0;iL->length||L->length==0){
		printf("修改失败n");
		return 0;
	}
	strcpy(L->data[i-1].name,a);
	return 1;
}
//	遍历
int travelSqlist(Sqlist L){
	int i;
	if(L.length==0){
		printf("空表,遍历失败n");
		return 0;
	}
	else{
		for(i=0;iL.length||L.length==0){
		printf("输出失败n");
		return 0;
	}
	else{
		printf("%d	%sn",L.data[i-1].number,L.data[i-1].name);
		return 1;
	}
}
//	有序归并
Sqlist combineSqlist(Sqlist L,Sqlist R){
	Sqlist T;
	int i;
	initSqlist(&T);
	int p=0,q=0;
	while(p 

二.单链表

// 2)带头结点单链表的基本操作:
typedef struct node{
	int data;
	struct node *next;
}Node,*LinkList; 
//初始化
int initLinkList(LinkList *L){
	(*L)=(LinkList)malloc(sizeof(Node));
	if((*L)==NULL){
		printf("初始化失败n");
		exit(0);
	}
	(*L)->next=NULL;
	return 1;
} 
//	插入(头插、尾插、任意位置插入)
//a.头插
int firstinsert(LinkList L,int a){
	LinkList s;
	s=(LinkList)malloc(sizeof(Node));
	if(s==NULL){
		printf("插入失败n");
		return 0;
	}
	s->data=a;
	s->next=L->next;
	L->next=s;
	return 1;
} 
//b.尾插(L是空表)
int lastinsert(LinkList L,int a){
	LinkList s,R=L;
	s=(LinkList)malloc(sizeof(Node));
	if(s==NULL){
		printf("插入失败n");
		return 0;
	}
	while(R->next!=NULL){
		R=R->next;
	}
	s->data=a;
	s->next=R->next;
	R->next=s;
	return 1;
} 
//c.任意位置插入
int insert(LinkList L,int i,int a){
	LinkList s,p=L;
	int pos=0;
	s=(LinkList)malloc(sizeof(Node));
	if(s==NULL||i<1){
		printf("插入失败n");
		return 0;
	}
	while(p!=NULL&&posnext;
		pos++;
	}
	if(p==NULL){
		printf("插入失败n");
		return 0;
	}
	s->data=a;
	s->next=p->next;
	p->next=s;
	return 1;
} 
//	创建(尾插法)
int creatLinkList(LinkList *L){
	int i,m,a;
	initLinkList(L);
	printf("请输入要创建的数目n");
	scanf("%d",&m);
	for(i=0;inext;
		L->next=p->next;
		free(p);
	}
	return 1;
} 
//b.尾删
int lastdelet(LinkList L){
	LinkList p=L,q=L->next;
	while(q->next!=NULL){
		p=p->next;
		q=q->next;
	}
		p->next=q->next;
		free(p);
	return 1;
} 
//c.任意位置删除 
int delet(LinkList L,int i){
	LinkList q=L,p;
	int pos=0;
	while(q->next!=NULL&&posnext;
		pos++;
	}
	if(i<1||q->next==NULL){
		printf("删除失败n");
		return 0;
	}
	p=q->next;
	q->next=p->next;
	free(p);
	return 1;
} 
//	查找
int locationLinkList(LinkList L,int a){
	int i=1;
	LinkList p=L->next;
	while(p->data!=a&&p!=NULL){
		i++;
		p=p->next;
	}
	if(p==NULL){
		printf("查找失败n");
		return 0;
	}
	printf("查找数值位置为:%d",i);
	return 1;
}
//	修改
int changeLinkList(LinkList L,int i,int a){
	int pos=0;
	LinkList p=L;
	while(p!=NULL&&posnext;
	}
	if(p==NULL)	return 0;
	p->data=a;
	return 1; 
}
//	输出
int outputLinkList(LinkList L){
	LinkList p=L->next;
	while(p!=NULL){
		printf("%d	",p->data);
		p=p->next;
	}
	 return 1;
}
//	求表长
int lengthLinkList(LinkList L){
	int i=0;
	LinkList p=L;
	while(p!=NULL){
		i++;
		p=p->next;
	}
	printf("表长%dn");
	return 1;
} 
//	逆序
int inverLink(LinkList L){
	LinkList p=L->next;
	L->next=NULL;
	while(p!=NULL){
		firstinsert(L,p->data);
		p=p->next;
	}
	return 1;
}
//	有序插入(从小到大)
int youxuinsert(LinkList L,int a){
	LinkList p=L,s;
	s=(LinkList)malloc(sizeof(Node));
	s->data=a; 
	while(p->next!=NULL){
		if(anext->data)	{
			s->next=p->next;
			p->next=s;
			break;
		}
		p=p->next;
	} 
	if(p->next==NULL){
		s->next=p->next;
		p->next=s;
	}
	return 1;
}
//	单链表的有序归并
LinkList unionLinkList(LinkList L,LinkList R){
	LinkList p=L->next,q=R->next,T,t=T,s;
	initLinkList(&T);
	while(p!=NULL&&q!=NULL){
		s=(LinkList)malloc(sizeof(Node));
		if(p->datadata){
			s->data=p->data;
			s->next=t->next;
			t->next=s;
			t=s;
			q=q->next;
		}
		if(p->data>=q->data){
			s->data=p->data;
			s->next=t->next;
			t->next=s;
			t=s;
			p=p->next;
		}
	} 
	while(p!=NULL){
		s=(LinkList)malloc(sizeof(Node));
		s->data=p->data;
		s->next=t->next;
		t->next=s;
		t=s;
		p=p->next;
	}
	if(q!=NULL){
		s=(LinkList)malloc(sizeof(Node));
		s->data=p->data;
		s->next=t->next;
		t->next=s;
		t=s;
		q=q->next;
	}
	return T;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976416.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号