代码存档
#include <stdio.h>
#include "./3_list.h"
int main()
{
list* sq = create_list();
insert_list(sq,3);
insert_list(sq,7);
show_list(sq);
insert_listByIndex(sq,9,0);
show_list(sq);
insert_listByIndex(sq,44,2);
show_list(sq);
insert_listByIndex(sq,99,4);
show_list(sq);
datatype x;
x=delete_listByIndex(sq,2);
show_list(sq);
printf("%d\n",x);
free_list(&sq);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include "./3_list.h"
list* create_list(void)
{
list* sq = (list*)malloc(sizeof(list));
if(NULL == sq)
{
printf("顺序表创建失败\n");
return NULL;
}
sq->pos=0;
return sq;
}
int insert_list(list* sq,datatype num)
{
if(sq->pos >= N)
{
printf("顺序表已满\n");
return -1;
}
sq->data[sq->pos] = num;
sq->pos++;
return 0;
}
datatype delete_list(list* sq)
{
if(0 == sq->pos)
{
printf("顺序表为空\n");
return (datatype)-1;
}
sq->pos--;
datatype num = sq->data[sq->pos-1];
return 0;
}
void show_list(list* sq)
{
for(int i=0;i<sq->pos;i++)
{
printf("%d ",sq->data[i]);
}
putchar(10);
return;
}
void insert_listByIndex(list* sq,datatype num,int index)
{
if(sq->pos>=N)
{
printf("顺序表已满");
return;
}
if(index<0 || index>sq->pos){
printf("插入位置非法");
return;
}
for(int i=sq->pos;i>=index+1;i--)
{
sq->data[i]=sq->data[i-1];
}
sq->data[index]=num;
sq->pos++;
return;
}
datatype delete_listByIndex(list* sq,int index)
{
if(0 == sq->pos)
{
printf("顺序表为空");
return 0;
}
if(index<0 || index>sq->pos)
{
printf("删除位置非法");
return 0;
}
datatype num = sq->data[index];
for(int i=index;i<=sq->pos-2;i++)
{
sq->data[i] = sq->data[i+1];
}
sq->pos--;
return num;
}
void free_list(list** sq)
{
free(*sq);
*sq = NULL;
printf("顺序表已删除\n");
}
#ifndef __LIST_H__
#define __LIST_H__
#define N 7
typedef int datatype;
typedef struct
{
datatype data[N];
int pos;
}list;
list* create_list(void);
int insert_list(list* sq,datatype num);
datatype delete_list(list* sq);
void show_list(list* sq);
void insert_listByIndex(list* sq,datatype num,int index);
datatype delete_listByIndex(list* sq,int index);
void free_list(list** sq);
#endif