线性表数据元素的类型为整型,以顺序表为存储结构。试编程实现:
⑴ 线性表置空
⑵ 求线性表长度
⑶ 数据元素的插入操作
⑷ 数据元素的删除操作
⑸ 显示线性表中的全部元素
#include<stdio.h> #define LIST_INIT_SIZE 100/* */ #define LISTINCREMENT 10/* */ typedef struct{/* */ int *elem; int length; int listsize; }SqList; SqList InitList_Sq(SqList L);/* */ SqList ClearList_Sq(SqList L); SqList ListInsert_Sq(SqList L,int i,int e);/* */ SqList ListDelete_Sq(SqList L,int i,int e); int ListLength_Sq(SqList L); void ShowList_Sq(SqList L); void SaveList_Sq(SqList L); void main(void) { SqList L; int e = 9,k,i; printf(" /t/t/tList_Sq/n"); printf("********************************************************************************"); printf("/t 1,Create an empty List /t2,Clear an List/n"); printf("/t 3,Show an List /t4,Print the length of List/n"); printf("/t 5,Insert an elem in List /t6,Delete an elem in List/n"); printf("/t 7,Save in /"c://SqList.dat/"/t8,Exit/n"); printf("********************************************************************************"); while(1) { printf("Your option(end with Enter):"); scanf("%d",&k); switch(k) { case 1: L=InitList_Sq(L); break; case 2: L=ClearList_Sq(L); break; case 3: ShowList_Sq(L); break; case 4: e=ListLength_Sq(L); break; case 5: printf("Input the number you what to insert:"); scanf("%d",&i); printf("Input the elem you what to insert:"); scanf("%d",&e); L=ListInsert_Sq(L,i,e); break; case 6: printf("Input the number you what to delete:"); scanf("%d",&i); L=ListDelete_Sq(L,i,e); break; case 7: SaveList_Sq (L); break; case 8: exit(1); break; default: break; } } } SqList InitList_Sq(SqList L) { L.elem = (int *)malloc(LIST_INIT_SIZE*sizeof(int));/* */ if(!L.elem)exit(0);/* */ L.length = 0;/* */ L.listsize = LIST_INIT_SIZE;/* */ printf("Ok,init list success!/n"); return L; } int ListLength_Sq(SqList L) { if(L.listsize!=LIST_INIT_SIZE) { printf("Not creat a List!/n"); return; } printf("Length of List--%d/n",L.length); return L.length; } SqList ClearList_Sq(SqList L) { if(L.listsize!=LIST_INIT_SIZE) { printf("Not creat a List!/n"); return; } L.length = 0; printf("Ok,clear list success!/n"); return L; } SqList ListInsert_Sq(SqList L,int i,int e) { int *p,*q; if(L.listsize!=LIST_INIT_SIZE) { printf("Not creat a List!/n"); return; } if(i<1||i>L.length+1) { printf("Error/n");/* */ return; } if(L.length>=L.listsize)/* */ { } q = &(L.elem[i-1]);/* */ for(p = &(L.elem[L.length-1]);p>=q;--p) {/* */ *(p+1) = *p; } *q = e;/* */ L.length+=1; /* */ printf("Ok,insert success!/n"); return L; } SqList ListDelete_Sq(SqList L,int i,int e) { int *p,*q; if(L.listsize!=LIST_INIT_SIZE) { printf("Not creat a List!/n"); return; } if(i<1||i>L.length+1) { printf("Error/n");/* */ return; } p = &(L.elem[i-1]); e = *p; printf("Delete %dth elem is %d/n",i,e); q = L.elem+L.length-1; for(++p;p<=q;++p) *(p-1) = *p; --L.length; printf("Ok,delete success!/n"); return L; } void ShowList_Sq(SqList L) { int i=0; if(L.listsize!=LIST_INIT_SIZE) { printf("Not creat a List!/n"); return; } if(L.length==0) { printf("List is empty!/n"); return; } for(i=0;i<L.length;i++) { printf("-----%d/n",L.elem[i]); } } void SaveList_Sq(SqList L) { FILE *F_SaveList; int i; if((F_SaveList=fopen("c://SqList.dat","wb"))!=NULL) { for(i=0;i<L.length;i++) fprintf(F_SaveList,"%d", L.elem[i]); } else printf("File error!"); fclose(F_SaveList); printf("Save the files successfully!/n"); }