//数据结构:顺序表
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define INITSIZE 100
#define ADDSIZE 10
typedef struct SqList{
int *addr;
int length;
int size;
}SqList;
void initList(SqList &x){
x.addr=(int*)malloc(sizeof(int)*INITSIZE);
if(!x.addr)
exit(0);
x.length=0;
x.size=INITSIZE;
}//初始化顺序表
//删除顺序表
int deleteList(SqList &x){
if(!x.addr)
return 1;
free(x.addr);
return 0;
}
int insertNode(SqList &x,int i,int e){
//排除i不合法的情况
if(i<0||i>x.length)
return 1;
//排除超出表容量的情况
if(x.length==x.size){
int *newAddr=(int*)realloc(x.addr,sizeof(int)*(x.size+ADDSIZE));
if(!newAddr)
exit(0);
x.addr=newAddr;
}
//插入元素
for(int j=x.length-1;j>i-1;j--)
x.addr[j+1]=x.addr[j];
x.addr[i]=e;
x.length++;
return 0;
}//在第i个元素后面插入一个元素e
int deleteNode(SqList &x,int i){
//排除i不合法的情况
if(i<0||i>x.length)
return 1;
//删除
for(int j=i;j<x.length;j++)
x.addr[j-1]=x.addr[j];
x.length--;
return 0;
}//删除第i个元素后面的元素
//输出顺序表
void outputList(SqList &x){
for(int i=0;i<x.length;i++)
printf("%3d",x.addr[i]);
printf("\n");
}
int main(){
SqList newList;
initList(newList);
int m=0;
printf("请按顺序输入要插入链表的元素(10个):");
for(int i=0;i<10;i++){
scanf("%d",&m);
insertNode(newList,i,m);
}
outputList(newList);
printf("请输入要删除第几个元素:");
scanf("%d",&m);
deleteNode(newList,m);
outputList(newList);
deleteList(newList);
return 0;
}
数据结构——顺序表的几个重要方法的C语言实现
最新推荐文章于 2024-06-28 18:08:33 发布