第三周项目1-(3)ListInsert、ListDelete、InitList、DestroyList函数

本文介绍了如何使用C语言实现List数据结构的基本操作,包括ListInsert函数进行元素插入,ListDelete函数进行元素删除,InitList用于列表初始化,以及DestroyList用于释放列表内存。通过示例代码展示了这些操作的实现细节和运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题及代码

/*  
*Copyright (c) 2015,烟台大学计算机学院  
*All rights reserved.  
*文件名称:test.cpp  
*作者:王敏 
*完成日期:2015年09月16日  
*版本号:v1.0  
*  
*问题描述:ListInsert、ListDelete、InitList、DestroyList函数
*输入描述:  
程序输出:  
*/   


#include <stdio.h>
#include <malloc.h>

#define MaxSize 50
typedef int ElemType;
typedef struct
{
    ElemType data[MaxSize];
    int length;
} SqList;

void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表   
void DispList(SqList *L);//输出线性表DispList(L)   
bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)   
int  ListLength(SqList *L); //求线性表的长度ListLength(L)   
bool GetElem(SqList *L,int i,ElemType &e); //求某个数据元素值GetElem(L,i,e)   
int  LocateElem(SqList *L, ElemType e); //按元素值查找LocateElem(L,e)   
void InitList(SqList *&L);//初始化线性表InitList(L)   
bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)      
bool ListDelete(SqList *&L,int i,ElemType e); //删除数据元素Li
完成单链表【不带头结点】实现的线性表,共9个主要函数。 #include <stdio.h> #include <malloc.h> typedef int ElemType; typedef struct LNode { ElemType data[maxsize]; struct LNode *next; //指向后继结点 } LinkNode; //声明单链表结点类型 void InitList(LinkNode *&L) { L=NULL; } void DestroyList(LinkNode *&L) { free(L); } bool ListEmpty(LinkNode *L) { return L==NULL; } int ListLength(LinkNode *L)//体现遍历的思想 { int length=0; for(LinkNode *p=L;p!=NULL;p=p->next) { length++; } return length; } void DispList(LinkNode *L)//体现遍历的思想 { for(LinkNode *p=L;p!=NULL;p=p->next) print(“%d”,p->data); print(“\n”); } bool GetElem(LinkNode *L,int i,ElemType &e)//体现遍历的思想 { int length; length=ListLength(LinkNode *L); if(i<1||i>length) return false; e=L->data[i-1]; return true; } int LocateElem(LinkNode *L,ElemType e)//体现遍历的思想【注意返回的是“逻辑位序”】 { int i=0; int length; length=ListLength(LinkNode *L); while(i<length&&L->data[i]!=e) i++; if(i>length) return 0; else return i+1; } bool ListInsert(LinkNode *&L,int i,ElemType e) { int j; int length; length=ListLength(LinkNode *L); if(i<1||i>length+1||length==maxsize) return false; for(j=length;j>=i;j--) L->data[j]=L->data[j-1] L->data[i-1]=e; LinkNode *p=L; p=p->next; return true; } bool ListDelete(LinkNode *&L,int i,ElemType &e) { int length; length=ListLength(LinkNode *L); int j; if (i<1 || i>length) return false; e=L->data[i-1]; for (j=i+1;j<=length;j++) L->data[j-2]=L->data[j-1]; LinkNode *p L=p->next; delete p; return true; } --------------------- int main() { LinkNode *h; ElemType e; printf("单链表的基本运算如下:\n"); printf(" (1)初始化单链表h\n"); InitList(h); printf(" (2)依次采用尾插法插入a,b,c,d,e元素\n"); ListInsert(h,1,&#39;a&#39;); ListInsert(h,2,&#39;b&#39;); ListInsert(h,3,&#39;c&#39;); ListInsert(h,4,&#39;d&#39;); ListInsert(h,5,&#39;e&#39;); printf(" (3)输出单链表h:"); DispList(h); printf(" (4)单链表h长度:%d\n",ListLength(h)); printf(" (5)单链表h为%s\n",(ListEmpty(h)?"空":"非空")); GetElem(h,3,e); pri
最新发布
03-23
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值