第一次写数据结构增删改查,按照工程写

本文详细介绍了线性表的基本操作,包括初始化、赋值、获取长度、判断空表、查找元素、插入元素、删除元素等。通过具体代码实现,帮助读者深入理解线性表的数据结构及其常用算法。
***main函数中***
#include <stdio.h>
#include "list.h"
int main(){
	int i,a,s; 
	ElemType e;
	SqList sqlist;
	SqList *L=&sqlist;
///////////////////////////////////	
	int t=InitList(L);
	if(t==OK){
		printf("%d %d\n",L->length,L->listsize);
	}
/////////////////////////////////	
	ValueList(L);
////////////////////////////////	
	int ListLength(SqList *L);
	printf("%d\n",L->length);
///////////////////////////////	
    int m=IsEmpty(L);
	if(m==OK)
	printf("表为空\n");
	else
	printf("表不为空\n"); 
///////////////////////////////
	printf("你想找到第几个元素\n");
	scanf("%d",&i);
    GetElem(L,i,&e);
    printf("%d\n",e);
////////////////////////////
    printf("请输入你想查找的元素,返回他的位置\n");    
    scanf("%d",&e);
    s=LocateELem(L,e);
    printf("%d\n",s);
///////////////////////////////
    printf("请输入你要插入的位置,和要插入的元素\n");
	scanf("%d %d",&i,&e); 
    ListInsert(L,i,e);
    for(i=0;i<L->length;i++){
    	printf("%d ",L->elem[i]);
    }
////////////////////////////////////////
    printf("请输入要删除的元素的位置\n"); 
	scanf("%d",&i);   
	ListDelete(L,i,&e);
 for(i=0;i<L->length;i++){
    	printf("%d ",L->elem[i]);
    }
	printf("删除的数为%d\n",e);
	return 0 ;
    }	 
***执行函数***
#include <stdio.h>
#include "list.h"
Status InitList (SqList *L)//构造一个空线性表-----构造方法
{
	L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
	if(L->elem==NULL){
	return ERROR;
	}
	L->length=0;
	L->listsize=LIST_INIT_SIZE;
	return OK;
}
Status ValueList(SqList *L){//赋值 
	int i,j;
    printf("请输入线性表表单个数:");
    scanf("%d",&i);
    if(i>L->listsize)//输入表单数,大于开辟内存大小时
     {while(1)//开辟空间直到大于需要的范围为止
    {if(i > L->listsize){
    L->elem = (ElemType *)realloc(L->elem,LIST_INIT_SIZE*sizeof(ElemType));
    L->listsize +=LIST_INIT_SIZE;}
    else break;}}
    for(j = 0 ;j < i; j++)
    scanf("%d",&L->elem[j]);
    L->length = i;//表单长度进行赋值,保存
    printf("赋值成功!!!\n");
    return OK;
}
int ListLength(SqList *L){//长度 
	return L->length;
}
int IsEmpty(SqList *L){//判断是否为空 
	if(L->length!=0){
	return ERROR;//为空 	
	}
	else {
	return OK;//不为空 
	}		
}
int GetElem(SqList *L,int i,ElemType *e){//找到第几个元素,并返回该元素 
if(i < 0 || i >L->length || L->length == 0)
        return ERROR;//异常处理
        	*e=L->elem[i-1];
}
int LocateELem(SqList *L,ElemType e){//查找某个元素,并且返回他的位置 
        int i,s;
		for(i=1;i<=L->length;i++){
		if(L->elem[i]==e){
 	     s=i+1;
		  break;}}
        return s;
} 
Status ListInsert(SqList *L,int i,ElemType e){
	    int j; 
		for(j=L->length;j>=i;j--){
			L->elem[j+1]=L->elem[j];
	}
	L->elem[i]=e;
	L->length++;
	return OK;
}
Status ListDelete(SqList *L,int i,ElemType *e){
	int j; 
		*e=L->elem[i-1];
		for(j=i;j<L->length;j++){
			L->elem[j-1]=L->elem[j];
	}

	L->length--;
	return OK;
}
#ifndef STATUS_H
#define STATUS_H
#define   TRUE    1
#define   FALSE   0
#define   OK    1
#define    ERROR    0
#define    INFEASIBLE   -1
#define   OVERFLOW   -2
typedef    int   ElemType;
typedef    int   Status;
#endif

***函数声明***
#ifndef LIST_H
#define LIST_H
#include "status.h"
#define MAXSIZE 5
#define LIST_INIT_SIZE 100
typedef  struct {		
ElemType  *elem;         //指向存放线性表中数据元素的基地址		
int  length;          //线性表的当前长度   		
int  listsize;        //当前分配的存储容量  
}SqList;
Status InitList (SqList *L);//构造一个空线性表
Status ValueList(SqList *L);//赋值 
int ListLength(SqList  *L);//求线性表的长度
int IsEmpty(SqList *L);//判断线性表是否为空
int GetElem(SqList *L,int i,ElemType *e);//获取线性表第i位置的元素
int LocateELem(SqList  *L,ElemType e);//查询数据元素e,返回其位置
Status ListInsert(SqList *L,int i,ElemType e);//在线性表第i位置插入元素e
Status ListDelete(SqList *L,int i,ElemType *e);//删除线性表中第i位置的元素
#endif


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值