C语言顺序表完整实现

#include <stdio.h>
#include <stdlib.h>
#define ElementType int
#define MAXSIZE 100
typedef struct{
	ElementType Data[MAXSIZE];
	int Last;
}List;//list在前面和后面效果是一样的 

List *MakeEmpty();
ElementType FindKth(int K, List *PtrL);
int Find(ElementType X,List *PtrL);
void Insert(ElementType X, int i, List *PtrL);
void Delete(int i, List *PtrL);
int Length(List *PtrL);
void LPrint(List *PtrL){
	for(int i = 0; i<PtrL->Last;i++)
		printf("%d\n",PtrL->Data[i]);
}
int main(){
	List L,*PtrL;//访问下标为i的元素 L.Data[i]或Ptrl->Data[i]
				//线性表的长度:L.Last+1或Ptrl->Last+1 

	PtrL = MakeEmpty();
	for(int i = 0; i< 10;i++){
		Insert(i,i,PtrL);
	}
	Insert(15,5,PtrL);
	LPrint(PtrL);
	Delete(5,PtrL);
	LPrint(PtrL);
	return 0;
}
//初始化,建立空的顺序表
List *MakeEmpty(){
	List *PtrL;
	PtrL = (List *)malloc(sizeof(List));
	PtrL->Last=0;
	return PtrL;
}
ElementType FindKth(int K, List L){
	return L.Data[K-1];
}
int Find(ElementType X,List L){
	List *PtrL = &L;
	int i = 0;
	for(i =0;i<=PtrL->Last;i++)
		if(PtrL->Data[PtrL->Last]==X)
			break;
	if(i>PtrL->Last)
		return -1;
	else
		return i;
}
void Insert(ElementType X, int i, List *PtrL){//按第i个位置处理 ,L.Data[i-1]上插入 ;第一个元素是L.last[L.last+1]
	if(i<1||i>PtrL->Last+2){
		printf("插入位置不合理\n");
		return;
	}

	for (int j = PtrL->Last;j>=i-1;j--)
		PtrL->Data[j+1]=PtrL->Data[j];
	PtrL->Data[i-1]=X;
	PtrL->Last++;
	return;
}
void Delete(int i, List *PtrL){//按第i个位置处理 ,删除L.Data[i-1];最后一个元素为L.Data[L.last]
	if(i<1||i>PtrL->Last){
		printf("删除位置不合理\n");
		return;
	}
	int j;
	for(j=i;j<PtrL->Last;j++)
		PtrL->Data[j-1]=PtrL->Data[j];
	PtrL->Last--;
}
int Length(List *PtrL){
	return PtrL->Last+1;
}

  

时间: 2024-11-05 21:40:35

C语言顺序表完整实现的相关文章

C语言--顺序表

#pragma once            //只编译一次 #include <memory.h> #include<assert.h> #include <stdio.h> #define  MAX_SIZE 100 typedef int DataType;             //数据类型重命名 typedef struct SeqList         //定义结构体类型 {     DataType array[MAX_SIZE];     // 数

C语言顺序栈完整实现

#include <stdio.h> #include <stdlib.h> const int MAXSIZE = 100;//注意 #define ElementType int typedef struct SNode *Stack; struct SNode{ ElementType Data[MAXSIZE]; int Last; }; Stack CreateStack(int MAXSIZE); int IsFull(Stack S); void Push(Stack

稀疏矩阵的三元组顺序表的C语言实现

对于没有排序功能的集合来说,都可以使用java.util.Collections.sort()方法进行排序,它除了集合对象以外,还需要提供一个比较器.如果列表中的元素全部都是相同的类型,并且这个类实现了Comparable接口,就可以简单的调用Collections.sort()方法,如果这个类没有实现comparable接口,那么可以创建一个比较器传递一个Comparator实例作为Sort()的第二个参数进行排序,另外,如果不想使用默认的分类顺序进行排序,同样也可以传递一个Comparato

C语言实现顺序表的增删查改以及排序

顺序表是线性表中的一种重要的数据结构,也是最基础的数据结构,今天我用C语言实现下线性表的基本操作,以及冒泡排序与选择排序在线性表中的算法实践,代码如下: seqlist.h: #ifndef __SEQLIST__ #define __SEQLIST__ #define MAX 5 #include <stdlib.h> typedef int DataType; typedef struct SeqList { DataType array[MAX]; size_t size; }SeqLi

利用C语言实现顺序表

利用C语言实现静态顺序表 //---------- 头文件#include "SeqList.h" -------------------- #pragma once #include<stdio.h>#include<stdlib.h>#include<string.h> #define MAX 100 //------------------ 定义数据类型 ----------------------------typedef int DataT

(续)顺序表之单循环链表(C语言实现)

单循环链表和单链表的唯一区别在于单循环链表的最后一个节点的指针域指向第一个节点, 使得整个链表形成一个环. C实现代码如下: #include<stdio.h> typedef struct node { int data; struct node *next; }Node; //链表的初始化 Node* InitList(int number) { int i; Node *pHead=(Node *)malloc(sizeof(Node)); Node *TempHead=pHead; N

C语言实现顺序表

顺序表是C语言中一种基本的结构,可以存储各种基本类型的数据,而且不但可以存储基本类型的数据,也可以存储一种结构.所以顺序表是一种在学C的过程中必须掌握的结构,通过学习整理,下面来实现一下: 首先,先要想好用什么实现,一般实现最基本的顺序表的话直接用数组实现,我们在这用一个结构体来封装这个顺序表(封装这一概念是在C++中最常用的概念) #define ARRAY_EMPTY -2 #define ARRAY_FULL -1 #define MAX_SIZE 10000 typedef int Da

顺序表的C语言实现

一直在复习数学,想着要在六月底之前把数学三门四本书都过一遍,最近看到了线性代数了,好多学了都忘记了,慢慢来吧! 前段时间看的线性表了,才看了一点点,关于顺序表大致实现了下,后面抽看看看数据结构了,数学得全力复习了.准备暑假开始系统复习专业课,加油吧! 顺序表代码如下,简单实现了下,正好抓住这个机会复习了结构体,指针等知识.main()函数里写的比较乱,主要在于其他子函数里的实现 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #defi

c语言实现数据结构中的顺序表

以下是我用c语言实现的顺序表 /  #pragma once;    #ifndef _STDLIB_H    #include <stdlib.h>    #endif    #ifndef _ELEMTYPE_H    typedef int ElemType;                                   #endif    #ifndef _SORTTYPE_H    typedef int SortType;        #endif  #ifndef _FU