线性表中数组的实现
#include<stdio.h> #define maxn 110000 struct Node { int Data[maxn]; int last; }; typedef struct Node* LNode; //初始化 LNode Creat() { LNode lis; lis=(LNode)malloc(sizeof(struct Node)); lis->last=-1; return lis; } //在第i个位置插入k //因为本身就是一个指针,所以不用取地址 void charu(LNode List,int i,int k) { int pos; if(i<1) { printf("插入的位置不合法\n"); return ; } if(List->last>=maxn) { printf("空间已满\n"); return ; } for(pos=List->last;pos>i;pos--) List->Data[pos+1]=List->Data[pos]; List->Data[i-1]=k; List->last++; } //输出List所有值 void print(LNode List) { int i; for(int i=0;i<=List->last;i++) printf("%d ",List->Data[i]); printf("\n"); } //删除位置为k-1的值 void shanchu(LNode List,int k) { int pos; if(k<1) { printf("删除的位置不合法\n"); return ; } if(k>List->last+1) { printf("删除元素无效\n"); return ; } for(pos=k;pos<=List->last;pos++) { List->Data[pos-1]=List->Data[pos]; } List->last--; } //寻找元素为k的位置 int Find(LNode List,int k) { int i=0; for(i=0;i<=List->last;i++) if(List->Data[i]==k) return i+1; return 0; } int main() { int k; LNode List; List=Creat(); int length,del,find; scanf("%d",&length); printf("插入:"); for(int i=0;i<length;i++) { scanf("%d",&k); charu(List,i+1,k); } print(List); printf("删除:"); scanf("%d",&del); shanchu(List,del); print(List); printf("查找:"); scanf("%d",&find); if(Find(List,find)) printf("%d\n",Find(List,find)); else printf("没有找到\n"); return 0; }

别趴下,熬过黑夜就是黎明
浙公网安备 33010602011771号