IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 我的第一篇博客 -> 正文阅读

[数据结构与算法]我的第一篇博客

C语言数据结构-线性表的操作

线性表的类型定义:线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的

顺序表的定义

定义顺序表
  typedef int datatype;
typedef struct {
	    int last;
	    Datatype date[maxsize];
}sequenlist;

1线性表的顺序表示和实现

1)顺序线性表的创建、打印和定位计数。

   /*建立顺序表*/
void creatlist(sequenlist* L) {
	 int i, n;
	 int tmp;
	 printf("请输入数据个数:\n");
	 scanf("%d", &n);
	 for (i = 0; i < n; i++) {
		printf("date[%d]=", i);
		scanf("%d", &tmp);
		L->date[i] = tmp;
	 }
	 L->last = n - 1;
	 printf("\n");
}
/*打印顺序表*/
void printout(sequenlist* L) {
	int i;
	for (i = 0; i <= L->last; i++) {
		printf("data[%d]=", i);
		printf("%d\n", L->date[i]);
	}
}
/*定位计数*/
int  LocList(sequenlist* L,int i) {
	  if (L == NULL) {
		 printf("线性表为空");
		 return -1;
	 }
	 for (int j = 0; j <= L->last; j++) {
		 if (L->date[j] == i) {
			 printf("存在该数,该数在第%d个位置\n", j+1);
		 }
	 }
	 return 0;
}

2)顺序线性表插入/删除。(A)指定插入删除位置;(B)插入删除后数据保持有序。

/

/指定位置插入并保持有序
void insert(sequenlist* L,int x,int i)
{
?	if (L == NULL && x > L->last) {
?		printf("插入失败请重试");
?		return;
?	}
?	int j;
?	for (int j = L->last; j >= i; j--) {
?		L->date[j + 1] = L->date[j];
?	}
?	L->date[i] = x;
?	L->last++;
?	//插入排序
?	int temp;
?	for (i = 1; i <= L->last; i++)
?	{
?		temp = L->date[i];
?		j = i - 1;
?		while (j >= 0 && temp < L->date[j])  //在这里改顺序 !!!
?		{
?			L->date[j+1] = L->date[j];
?			j--;
?		}
?		L->date[j + 1] = temp;
?	}
}
//指定位置删除并保持有序
void DeletList(sequenlist* L, int i) {
?	if (L == NULL && i > L->last) {
?		printf("删除失败请重试");
?		return;
?	}
?	for (int j =i; j <=L->last; j++) {
?		L->date[j ] = L->date[j+1];
?	}
?	L->last--;
?	//插入排序
?	int j;
?	int temp;
?	for (i = 1; i <= L->last; i++)
?	{
?		temp = L->date[i];
?		j = i - 1;
?		while (j >= 0 && temp < L->date[j])  //在这里改顺序 !!!
?		{
?			L->date[j + 1] = L->date[j];
?			j--;
?		}
?		L->date[j + 1] = temp;
?	}
}

3)顺序线性表就地逆序。

//顺序表就地逆序
void ReverList(sequenlist* L) {
?	if (L == NULL) {
?		return;
?	}
?	int left = 0;//左
?	int right = L->last;//右
?	while (left <= right) {
?		//交换
?		 if (L->date[left] != L->date[right]) {
?			L->date[left] = L->date[left] ^ L->date[right];
?			L->date[right] = L->date[left] ^ L->date[right];
?			L->date[left] = L->date[left] ^ L->date[right];
?		}
?		left++;
?		right--;
?	}
}

4)判断两顺序表是否相同

//判断两线性表是否相同
void JudgeSameList(sequenlist* L1, sequenlist* L2) {
?	 if ( L2 == NULL && L1 == NULL) {
?		 printf("线性表为空请重试");
?		 return;
?	 }
?	 else if (L1->last == L2->last) {
?		 int i = 0;
?		 while (i <= L1->last) {
?			 if (L1->date[i] != L2->date[i]) {
?				 printf("两线性表不相同");
?				 return;
?			 }
?			 i++;
?		 }
?		 printf("两线性表相同");
?		 return;
?	 }
?	 printf("两线性表不相同");
}

5}合并两个顺序表并对数据进行排序

void MergeList(sequenlist* L1, sequenlist* L2) {
?	if (L1 == NULL&&L2!=NULL) {
?		printf("合并失败");
?		return ;
?	}
?	else if (L2 == NULL && L1 != NULL) {
?		printf("合并失败");
?		return ;
?	}
?	int j = 0;
?	while (j <= L2->last) {
?		L1->date[L1->last+++1] = L2->date[j++];
?	}
?	//插入排序
?	int temp;
?	int i;
?	for (i = 1; i <= L1->last; i++)
?	{
?		temp = L1->date[i];
?		j = i - 1;
?		while (j >= 0 && temp < L1->date[j])  //在这里改顺序 !!!
?		{
?			L1->date[j + 1] = L1->date[j];
?			j--;
?		}
?		L1->date[j + 1] = temp;
?	}
}

写博客的第一天记录自己的学习(慢慢更新)

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 14:04:31  更:2021-10-07 14:06:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:43:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码