[领卓教育]顺序链表(seqlist)的增删改查与输出

xiaoxiao2025-10-21  9

#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 20 typedef struct { int data[N]; int last ;//记录顺序链表最后一个节点的位置(队列的大小) }seqlist_t; /*****************创建一个空的顺序链表********************/ seqlist_t * create_empty_seqlist(void) { seqlist_t * sl = (seqlist_t *)malloc(sizeof(seqlist_t)); memset(sl->data,0,N);//将所有成员清零 sl->last = -1; return sl ; } int insert_seqlist(seqlist_t * sl,int value) { sl->last ++ ; sl->data[sl->last % N] = value ; // 将数组下标限制在0~(N-1) return 0 ; } int show_seqlist(seqlist_t * sl) { int i ; for(i=0;i<=sl->last;i++) { printf("%4d",sl->data[i]); } printf("\n"); return 0 ; } /********************删除指定数*********************/ int remove_seqlist(seqlist_t * sl,int value) { int i , j ; for(i=0;i<=sl->last;i++) { if(sl->data[i] == value) { //将删除节点之后的都前移 for(j=i;j<sl->last;j++) { sl->data[j] = sl->data[j+1] ; } sl->last -- ;//删除一个数,链表长度会减一 } } return 0 ; } /********************改*********************/ int modify_seqlist(seqlist_t * sl,int old,int new) { int i ; for(i=0;i<=sl->last;i++) { if(sl->data[i] == old) { sl->data[i] = new ; } } return 0 ; } /********************查*********************/ int search_seqlist(seqlist_t * sl,int value) { int i ; for(i=0;i<=sl->last;i++) { if(sl->data[i] == value) { return 1 ; } } return 0 ; } int main(int argc, const char *argv[]) { seqlist_t * SL = create_empty_seqlist(); int i ; for(i=0;i<N;i++) { insert_seqlist(SL,i+1); } show_seqlist(SL); remove_seqlist(SL,5);//删掉聊表中数字5 show_seqlist(SL); modify_seqlist(SL,1,50);//修改链表中国数字1为50 show_seqlist(SL); if(search_seqlist(SL,5)) { printf("5 is found \n"); } else { printf("5 is not found \n"); } if(search_seqlist(SL,6)) { printf("6 is found \n"); } else { printf("6 is not found \n"); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-5038280.html

最新回复(0)