用C语言实现顺序表的插入删除并计算表长度。

如题所述

// 顺序表的创建,插入和删除,返回长度等
// 输出:
// 输入数据[长度 数据1 数据2 ...]:
// 5 1 2 3 4 5
// 1 2 3 4 5
// 1 45 2 3 4 5
// 1 45 3 4 5
// 实现已调试,希望采纳,如有问题,欢迎继续交流!

#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef int DataType;
typedef struct SeqList{
DataType data[MAX_SIZE];
int curSize;
}SeqList;

void createSeqList(SeqList *p){
if(NULL == p)
return;
p->curSize = 0;

printf("输入数据[长度 数据1 数据2 ...]:\n");
scanf("%d", &(p->curSize));
if(p->curSize > MAX_SIZE)
p->curSize = MAX_SIZE;
int i;
for(i=0; i<p->curSize; ++i)
scanf("%d", &(p->data[i]));
}

bool enSeqList(SeqList *p, int index, const DataType &data){
if(NULL == p || index<0 || index>p->curSize-1 || p->curSize==MAX_SIZE)
return false;
int i;
for(i=p->curSize-1; i>=index; --i)
p->data[i+1] = p->data[i];
p->data[index] = data;
p->curSize+=1;
return true;
}

bool deSeqList(SeqList *p, int index){
if(NULL == p || index>p->curSize-1)
return false;
int i;
for(i=index+1; i<=p->curSize-1; ++i)
p->data[i-1] = p->data[i];
p->curSize-=1;
return true;
}

int length(SeqList *p){
if(NULL == p)
return 0;
return p->curSize;
}

void printSeqList(SeqList *p){
if(NULL == p)
return;

int i;
for(i=0; i<p->curSize; ++i)
printf("%d ", p->data[i]);
printf("\n");
}

int main(int argc, char *argv[])
{
SeqList sq;
createSeqList(&sq);
printSeqList(&sq);
enSeqList(&sq, 1, 45);
printSeqList(&sq);
deSeqList(&sq, 2);
printSeqList(&sq);

system("PAUSE");
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答