#include<bits/stdc++.h> using namespace std; typedef struct Node { int *elem; int len; int listsize; }Sqlist; int initlist(Sqlist &L,int len)///初始化顺序表 { if(len==0) { len=100; } L.elem=(int *)malloc(len*sizeof(int));///申请空间 if(!L.elem) { return 0; } L.len=0; L.listsize=100; return 1; } int insertlist(Sqlist &L,int i,int e)///在i位置插入元素e { int *p,*q; if(i<0||i>L.len)///i值不合法 { return 0; } if(L.len>=L.listsize)///空间不足 { int *newbase = (int *)realloc(L.elem,(L.listsize+10)*sizeof(int));///重新申请空间 if(!newbase) { return 0; } L.elem=newbase; L.listsize+=10; } q=&L.elem[i]; for(p=&L.elem[L.len];p>=q;p--) { *p=*(p-1);///元素右移 } *q=e; L.len++; return 1; } int deletelist(Sqlist &L,int e)///删除所有值为e的元素 { int *p,*q; int i=0; while(i<L.len) { if(L.elem[i]==e) { q = &L.elem[i]; for(p=q;p<&L.elem[L.len];p++) { *p=*(p+1);///元素向左移动 } L.len--;///长度减一 } else { i++; } } } int deletelist2(Sqlist &L,int i)///删除第i个元素 { int *p,*q; q=&L.elem[i-1]; for(p=q;p<&L.elem[L.len];p++) { *p=*(p+1);///元素向左移动 } L.len--;///长度减一 } int sortlist(Sqlist &L)///排序 { sort(L.elem,L.elem+L.len); } int printlist(Sqlist &L)///打印 { for(int i=0;i<L.len;i++) { printf("%d ",L.elem[i]); } printf("\n"); } int main() { int n; while(~scanf("%d",&n)) { int num; Sqlist L; initlist(L,n); for(int i=0;i<n;i++) { scanf("%d",&num); insertlist(L,i,num); } sortlist(L); printlist(L); int num2; scanf("%d",&num2); deletelist(L,num2); printlist(L); scanf("%d",&num2); deletelist2(L,num2); printlist(L); } return 0; }
数据结构---顺序表
猜你喜欢
转载自blog.csdn.net/qq_37405320/article/details/78496618
今日推荐
周排行