数据结构——顺序表的几个重要方法的C语言实现

来源:互联网 发布:python 加减法 编辑:程序博客网 时间:2024/06/04 00:30
//数据结构:顺序表 #include <stdio.h>#include <malloc.h>#include <stdlib.h>#define INITSIZE 100#define ADDSIZE 10typedef 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;} 
原创粉丝点击