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

1.数据结构C语言-静态顺序表

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

1.数据结构C语言-静态顺序表

1.1线性表(Linear List)

特点:

        同一性。由同类数据元素组成。

        有穷性。

        有序性。相邻数据元素之间存在序偶关系。

1.2线性表的顺序存储

即物理结构和逻辑结构一致的线性表。

代码实现:

#include
#include
#define MAXSIZE 100
#define OK 1
#define ERROR 0

typedef int ElemType;
typedef struct seqlist {
	ElemType elem[MAXSIZE];
	int last;                       
}SeqList;

void InitList(SeqList* L);                      
void PrintList(SeqList* L);
int Locate(SeqList* L, ElemType e);             
ElemType GetElem(SeqList* L, int i);                 
int InsList(SeqList* L, int i, ElemType e);     
int DelList(SeqList* l, int i, ElemType* e);    
void MergeList(SeqList* LA, SeqList* LB, SeqList* LC);     


void InitList(SeqList* L)        
{
	int i;
	L->last = 0;
	for (i = 0; i <= MAXSIZE; i++)
	{
		L->elem[i] = 0;
	}
}

void PrintList(SeqList* L)       
{
	int i = 0;
	while (i <= L->last)              
	{
		printf("%d ", L->elem[i]);
		if ((i + 1) % 4 == 0)
		{
			printf("n");
		}
		i++;                         
	}
	printf("nn");
}

int Locate(SeqList* L, ElemType e)   
{
	int i = 0;   
	while ((i <= L->last) && (L->elem[i] != e))    
	{
		i++;
	}
	if (i <= L->last)                   
	{
		return i+1;                             
	}
	else
	{
		printf("查无此元素!nn");           
		return ERROR;
	}
}

ElemType GetElem(SeqList* L, int i)
{
	return L->elem[i];                            
}

int InsList(SeqList* L, int i, ElemType e)     
{
	int j = 0;
	if (i < 1 || i > L->last + 2)                     
	{
		printf("插入位置不合法!nn");
		return ERROR;
	}
	if (L->last >= MAXSIZE - 1)                
	{
		printf("表已满,无法插入!nn");
		return ERROR;
	}
	for (j = L->last + 1; j >= i; j--)          
	{
		L->elem[j] = L->elem[j - 1];
	}
	L->elem[i - 1] = e;                  
	L->last++;                            
	return OK;
}

int DelList(SeqList* L, int i, ElemType* e)    
{
	int j = 0;
	if (i < 1 || i > L->last + 1)               
	{
		printf("删除位置不合法!");
		return ERROR;
	} 
	*e = L->elem[i - 1];                          
	for (j = i - 1; j < L->last - 1; j++)
	{
		L->elem[j] = L->elem[j + 1];               
	}
	L->last--;                       
	return OK;
}

void MergeList(SeqList* LA, SeqList* LB, SeqList* LC)     
{
	int i = 0, j = 0, k = 0;
	while (i <= LA->last && j <= LB->last)          
	{
		if (LA->elem[i] <= LB->elem[j])
		{
			LC->elem[k] = LA->elem[i];
			k++;
			i++;
		}
		else
		{
			LC->elem[k] = LB->elem[j];
			k++;
			j++;
		}
	}         
	while (j <= LB->last)
	{
		LC->elem[k] = LB->elem[j];
		j++;
		k++;
	}      
	while (i <= LA->last)
	{
		LC->elem[k] = LA->elem[i];
		i++;
		k++;
	}      
	LC->last = LA->last + LB->last + 1;  
}


void SeqListTest()
{
	                
}
int main()
{
	SeqListTest();     
	return 0;
}

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

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

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