顺序表
运行结果
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;i<L->len;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||pos<0){printf("位置不合理");return;}for(int i=L->len-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;i<L->len-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;i<L->len;i++){for(int j=i+1;j<L->len;j++){if(L->data[i]==L->data[j]){del_pos(L,j);j--;} }}
}
fun.h
#ifndef __SEQ_LIST_H__
#define __SEQ_LIST_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;i<H->len;i++){printf("%d\n",(H->next)->data);H->next=(H->next)->next;}
}