C语言数据结构线性表源代码问题

2025-03-22 15:31:48
推荐回答(1个)
回答1:

#include #include #include #define MAXSIZE 100#define TRUE 1#define ERROR 0typedef int ElemType;typedef struct list { ElemType *elme; int length;}Sqlist;int initlist(Sqlist *L) { L->elme = (ElemType *)malloc(MAXSIZE * sizeof ElemType); if(L->elme == NULL) return ERROR; L->length = 0; return TRUE;}int insertlist(Sqlist *L,int pos,ElemType e) { int i; if(L->length == 0) { // 第一元素无条件插入 L->elme[0] = e; L->length = 1; return TRUE; } if(L->length >= MAXSIZE) { printf("表满。length = %d。\n",L->length); return ERROR; } if(pos < 1 || pos > L->length) { printf("插入位置不合理。\n"); printf("表长:%d,位置:%d\n",L->length,pos); printf("元素%d未能插入。\n",e); return ERROR; } for(i = L->length; i > pos - 1; --i) L->elme[i] = L->elme[i - 1]; L->elme[pos - 1] = e; ++L->length; return TRUE;}int deletelist(Sqlist *L,int pos) { int i; if(pos < 1 || pos > L->length) { printf("删除位置不合理。\n"); printf("表长:%d,位置:%d\n",L->length,pos); printf("第%d个元素未能删除。\n",pos); return ERROR; } for(i = pos - 1; i < L->length - 1; ++i) L->elme[i] = L->elme[i + 1]; --L->length; return TRUE;}void displaylist(Sqlist *L) { int i; for(i = 0;i < L->length; i++) printf("%d ",L->elme[i]); printf("\n");}int main(void){ Sqlist *L = (Sqlist *)malloc(sizeof(Sqlist)); int i,n,pos,res; initlist(L); printf("Enter n:"); scanf("%d",&n); srand((unsigned)time(NULL)); for(i = 0; i < n; ++i) { res = insertlist(L,i,rand() % 100); if(res == ERROR) --i; } displaylist(L); printf("Enter pos:"); scanf("%d",&pos); deletelist(L,pos); displaylist(L); return 0;}