顺序表:是一种线性结构,申请连续的内存空间,数据结构应有存储数据的一维数组和顺序表的长度和最大容量。
功能:顺序表的初始化,插入节点,删除节点,和打印节点
#include<stdio.h>
#define SIZE 5
typedef struct Table{
int *head; //动态数组
int length; //长度
int size;
}SeqTable;
//初始化
void Init(SeqTable* Ta){
//申请内存空间
if((Ta->head = (int *)malloc(SIZE*sizeof(int))) == NULL) {
printf("not enough!");
exit(0);
}
Ta->length = 0;
Ta->size = SIZE;
}
//插入元素
void Insert(SeqTable* Ta, int data){
if(Ta->length >= Ta->size) return;
else {
Ta->head[Ta->length] = data;
Ta->length += 1;
}
}
//删除节点
void delete(SeqTable* Ta, int data){
int i =0;
int j = Ta->length -1;
int flag =0;
if(Ta){
//先找到该元素
for(i=0; i< Ta->length; i++){
if(Ta->head[i] == data){
//将元素前移
while(j > i){
Ta->head[i-1] = Ta->head[i];
j--;
}
flag = 1;
Ta->length -= 1;
break;
}
}
//没有找到
if(!flag) printf("the deletedata not exited!\n");
//lenght-1
}
}
//输出
void print(SeqTable* TA){
int i=0;
for(i=0; i< TA->length; i++){
printf("%d ", TA->head[i]);
}
printf("\n");
}
int main(){
int i=0;
SeqTable Ta;
int data =0;
//任意输入选项
printf("1.初始化\n");
printf("2.插入节点\n");
printf("3.删除节点\n");
printf("4:结束程序\n");
while(1){
printf("请输入你的选项:");
scanf("%d",&i);
switch(i){
case 1:
Init(&Ta);
break;
case 2:
printf("请输入你插入的数据:");
scanf("%d",&data);
Insert(&Ta, data);
break;
case 3:
printf("请输入删除的数据:");
scanf("%d",&data);
delete(&Ta,data);
break;
case 4:
exit(0);
default:
printf("no the function!");
exit(0);
}
print(&Ta);
printf("\n");
}
}
