行业知识
数据结构day3
2026-10-20 01:53:57
来源:互联网转载
顺序表的按位置插入、按位置删除和去重
main.c
#include "seq_list.h"int main(){seq_p L = create_seq_list();//printf("%d\n",seq_empty(L));//printf("%d\n",seq_full(L));insert_pos(L,1,0);insert_pos(L,3,1); insert_pos(L,2,1);out_put(L);putchar(10);del_pos(L,1);out_put(L);putchar(10);insert_pos(L,2,1);insert_pos(L,3,3); insert_pos(L,2,4); insert_pos(L,4,5); insert_pos(L,2,6);del(L);out_put(L);return 0;} seq_list.c
#include "seq_list.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; //长度置0bzero(L,sizeof(L->data)); //给数组置0return L;}//判空int seq_empty(seq_p L){//1\容错判断if(L==NULL){return -1; //和判断结果区分开}return L->len==0?1:0;}//判满int seq_full(seq_p L){//1\容错判断//if(L==NULL){return -1; //和判断结果区分开}return L->len==MAX?1:0;}//打印顺序表void out_put(seq_p L){if(L==NULL){return;}if(seq_empty(L)){printf("表为空\n");return;}//循环打印顺序表for(int i=0;ilen;i++){printf("%d\n",L->data[i]);}}void insert_pos(seq_p L,datatype value,int pos){if(L==NULL){printf("入参为空,请检查\n");return;}if(seq_full(L)){printf("表满\n");return;}if(pos>L->len||posdata[i+1]=L->data[i];}L->data[pos]=value;L->len++;}void del_pos(seq_p L,int pos){if(L==NULL){return;}if(seq_empty(L)){printf("表为空,无需删除\n");return;}for(int i=pos;ilen;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=0;jlen;j++){if(i!=j&&L->data[i]==L->data[j]){del_pos(L,j);}}}} seq_list.h
#ifndef __SEQ_LIST_H__#define __SEQ_LIST_H__#include #include #define MAX 7typedef int datatype;typedef struct seq_list{datatype data[MAX];int len;}seq_list,*seq_p;seq_p create_seq_list();int seq_full(seq_p L);int seq_empty(seq_p L);void out_put(seq_p L);void insert_pos(seq_p L,datatype value,int pos);void del_pos(seq_p L,int pos);void del(seq_p L);#endif 运行���果
上一篇:共享打印机主机打完其他才能打