📄 顺序表作业.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 80
// 线性表存储空间的初始分配量
#define LISTINCREMENT 10
// 线性表存储空间的分配增量
#define OK 1
#define OVERFLOW 0
#define ERROR 0
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType *elem; // 存储空间基址
int length; // 当前长度
int listsize; // 当前分配的存储容量
// (以sizeof(ElemType)为单位)
} SqList; // 俗称 顺序表
Status Creat_Sq( SqList &L );
Status ListInsert_Sq(SqList &L,int i, ElemType e );
void main( ){
SqList L;
int i;
ElemType e,*p;
if(!Creat_Sq(L ))
printf("没有生成顺序表!");
else{
printf("输入要插入结点的位置: ");
scanf("%d",&i);
printf("输入元素的内容: ");
scanf("%d",&e);
ListInsert_Sq(L, i, e );
p=L.elem ;
printf("\n该顺序表中的内容:\n");
for(i=0;i<L.length ;p++,i++){
printf("%d ",*p);
if(!((i+1)%5)) printf("\n");
}
printf("\n该顺序表的长度是: %d\n",L.length );
}
}
Status Creat_Sq( SqList &L ) {
// 构造一个空的线性表
L.elem = (ElemType*) malloc (LIST_INIT_SIZE*sizeof (ElemType));
if (!L.elem) exit(OVERFLOW);
L.listsize = LIST_INIT_SIZE;
printf("输入要输入的顺序表的长度: ");
scanf("%d", &L.length);
for ( int i=0; i<L.length; i++){
printf("输入第%d个元素: ",i+1);
scanf("%d",&L.elem[i]);
}
printf("\n");
return OK;
} // InitList_Sq
Status ListInsert_Sq(SqList &L,int i, ElemType e ){
ElemType *q,*p,*newbase;
if(i<1||i>L.length+1)return ERROR;
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;
++L.length;
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -