用数组实现线性表

    xiaoxiao2021-04-17  48

    #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct node *Ptrl; struct node{ int  *Data; int Last; };  Ptrl Dent(int a)//进行初始化  { Ptrl T; T=(Ptrl)malloc(sizeof(Ptrl)*a); T->Last=-1; return T; } int Find(int X,Ptrl List)//查找下标操作  { int i=0; while(i<=List->Last&&List->Data[i]!=X) { i++; } if(i>List->Last) { return -1; } else { return i; } } void Insert(int X,int i,int size,Ptrl List)//进行插入操作  { if(List->Last==size-1) { printf("空间已满\n"); return ; } if(i<1||i>size-1) { printf("要插入位置异常\n"); return ;  } for(int j=List->Last;j>=i-1;j--) { List->Data[j+1]=List->Data[j]; } List->Data[i-1]=X; List->Last++; return ; } Ptrl Add(Ptrl List,int i) { int j,x; for(j=0;j<i;j++) { scanf("%d",&x); List->Data[j]=x; List->Last++; } return List; } void Delete(int x,Ptrl List) { int j,i; while(j<List->Last&&List->Data[j]!=x) { j++; } if(j>List->Last) { printf("不存在该元素\n"); } for(i=j;i<=List->Last;i++) { List->Data[i]=List->Data[i+1]; } List->Last--; }  void print(Ptrl List)//遍历元素  { int i; for(i=0;i<=List->Last;i++) {         printf("%d ",List->Data[i]); } }  int main() { Ptrl P; int num,size,j,x; printf("输入空间大小:");  scanf("%d",&size); P=Dent(size); printf("输入存储的元素个数:"); scanf("%d",&num); P=Add(P,num); printf("输入要查找的元素:"); scanf("%d",&x); j=Find(x,P); if(j==-1) { printf("不存在该元素\n"); } else { printf("该元素的下标是%d\n",j); } printf("输入要插入的元素、位置:"); scanf("%d %d",&x,&j); Insert(x,j,size,P); printf("输入要删除的元素:"); scanf("%d",&x); Delete(x,P);  printf("线性表的内容:"); print(P); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-673653.html

    最新回复(0)