顺序表
fun.c
#include "fun.h" seq_p create_seq_list() { seq_p L = (seq_p)malloc(sizeof(seq_list)); if(L==NULL) { printf("空间申请失败\n"); return NULL; } L->len = 0; bzero(L,sizeof(L->data)); return L; } int seq_empty(seq_p L) { if(L==NULL) { return -1; } return L->len==0?1:0; } int seq_full(seq_p L) { if(L==NULL) { return -1; } return L->len==MAX?1:0; } void insert_head(seq_p L,int data) { if(L==NULL) { printf("入参为空,请检查\n"); return; } if(seq_full(L)) { printf("表已满,不能插入\n"); return; } for(int i=L->len-1;i>=0;i--) { L->data[i+1] = L->data[i]; } L->data[0]=data; L->len++; } void insert_tail(seq_p L,int value) { if(L==NULL) { printf("入参为空,请检查\n"); return; } if(seq_full(L)) { printf("表已满,不能插入\n"); return; } L->data[L->len]=value; L->len++; } void out_put(seq_p L) { for(int i=0;ilen;i++) { printf("%d\n",L->data[i]); } } void insert_pos(seq_p L,int value,int pos) { if(L==NULL) { printf("入参为空,请检查\n"); return; } if(seq_full(L)) { printf("表已满,不能插入\n"); return; } if(pos>L->len||poslen-1;i>=pos;i--) { L->data[i+1]=L->data[i]; } L->data[pos]=value; L->len++; } void del_pos(seq_p L,int pos) { if(L==NULL) { printf("入参为空,请检查\n"); return; } if(seq_empty(L)) { printf("表为空,无需删除\n"); return; } for(int i=pos;ilen-1;i++) { L->data[i]=L->data[i+1]; } L->len--; } void del(seq_p L) { if(L==NULL){return;} if(seq_empty(L)){return;} if(L->len==1){printf("只有一个元素\n");return;} for(int i=0;ilen;i++) { for(int j=i+1;jlen;j++) { if(L->data[i]==L->data[j]) { del_pos(L,j); j--; } } } }
fun.h
#ifndef __SEQ_LIST_H__ #define __SEQ_LIST_H__ #include #include #include #define MAX 7 typedef struct seq_list { int data[MAX]; int len; } seq_list,*seq_p; seq_p create_seq_list(); int seq_empty(seq_p L);//判满 int seq_full(seq_p L);//判空 void insert_head(seq_p L,int data);//头插 void insert_tail(seq_p L,int value);//尾插 void out_put(seq_p L);//输出 void insert_pos(seq_p L,int value,int pos);//按下标插入 void del_pos(seq_p L,int pos);//按下标删除 void del(seq_p L);//去重 #endif
main.c
#include "fun.h" int main() { seq_p L = create_seq_list(); insert_head(L,10); insert_head(L,20); insert_tail(L,20); insert_tail(L,30); out_put(L); putchar(10); insert_pos(L,50,2); out_put(L); putchar(10); del_pos(L,2); out_put(L); putchar(10); del(L); out_put(L); return 0; }
//尾插 void insert_tail(link_p H,link_p T,datatype data) { if(T==NULL) { printf("入参为空,请检查\n"); return; } link_p new = create_node(data); T->next=new; H->len++ } //输出 void out_put(link_p H) { for(int i=0;ilen;i++) { printf("%d\n",(H->next)->data); H->next=(H->next)->next; } }