踩坑2——线性表的顺序表示和实现、线性表的链式表示和实现

踩坑2——线性表的顺序表示和实现、线性表的链式表示和实现,第1张

踩坑2——线性表的顺序表示和实现、线性表的链式表示和实现
typedef int Status;
typedef int ElemType; 
typedef struct { 
	ElemType *elem;
	int length;
	int listsize;
}SqList;

在第i个元素之前插入元素e

Status ListInsert_Sq(SqList &L, int i, ElemType e) {
	ElemType *newbase;
	ElemType *p, *q;
	if(i < 1||i >L.length + 1) return ERROR;//i不合法
	
	if(L.length >= L.listsize) {//当线性表的长度大于或等于当前分配存储空
		newbase = (ElemType *)realloc(L.elem, (L.listsize + LISTINCREMENT) * sizeof(ElemType)); 
		if(!newbase) exit(OVERFLOW);//存储空间申请失败 
		L.elem = newbase;
		L.listsize += LISTINCREMENT;
	}
	q = &(L.elem[i-1]); 
	for(p = &(L.elem[L.length - 1]); p >= q; --p) *(p+1) = *p;
	*q = e;//第i个元素为e 
	++L.length;
	printf("%d ", L.length);
	return OK;
}
Status ListTraverse(SqList L, Status (*Visit)(ElemType)) {
	int i;
	for(i = 1; i < L.length; i++) {
		Visit(L.elem[i-1]);
	}
	return OK;
}
Status Visit(ElemType e) {//当ElemType不为int时,不能用 
	printf("%d ", e);
}

main()函数

#include
#include"List.h"
int main(int argc, char** argv) {
	SqList q;
	int i;
	InitList_Sq(q);
	for(i = 1; i < 10; i++)
		ListInsert_Sq(q, i, i);
	ListTraverse(q, Visit);
	return 0;
}

线性表的顺序结构是一种随机存储结构,若某线性表常用的 *** 作是存取任意指定序号元素或在最后进行插入和删除元素运算,则应该采用顺序存储结构。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5635684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存