数据结构副本 - 半期测试
- 格式:doc
- 大小:295.00 KB
- 文档页数:51
有序顺序表的合并操作的实现941 #include #include using namespace std; typedef struct { int data[100]; int length; }sqlist; void crearelist(sqlist *&L,int a[],int n) { int i; L=(sqlist *)malloc(sizeof(sqlist)); for(i=0;iL->data[i]=a[i]; L->length=n; } void initlist(sqlist *&L) { L=(sqlist *)malloc(sizeof(sqlist)); L->length=0; } void displist(sqlist *L) { int i; for(i=0;ilength-1;i++) coutdata[i]>L->data[i+1]) {k=L->data[i];L->data[i]=L->data[i+1];L->data[i+1]=k;} } }
int main() { sqlist *L1,*L2,*L3; initlist(L1); initlist(L2); initlist(L3); int i,m,t,b[50],c[50],d[100]; cin>>m; for(i=0;icin>>b[i]; crearelist(L1,b,m); cin>>t; for(i=0;icin>>c[i]; crearelist(L2,c,t); for(i=0;id[i]=b[i]; for(i=0;id[m+i]=c[i]; crearelist(L3,d,m+t); paixu(L3); displist(L3); return 0; } 逆置顺序表942 #include #include using namespace std; typedef struct { char data[100]; int length; }sqlist; void crearelist(sqlist *&L,char a[],int n) { int i; L=(sqlist *)malloc(sizeof(sqlist)); for(i=0;iL->data[i]=a[i]; L->length=n; } void initlist(sqlist *&L) { L=(sqlist *)malloc(sizeof(sqlist)); L->length=0; } void displist(sqlist *L) { int i; for(i=L->length-1;i>0;i--) cout int main() { sqlist *L1; initlist(L1); int i,m; char b[50]; cin>>m; for(i=0;icin>>b[i]; crearelist(L1,b,m); displist(L1); return 0; } 顺序表插入操作的实现943 #include #include using namespace std; typedef struct { int data[100]; int length; }sqlist; void crearelist(sqlist *&L,int a[],int n) { int i; L=(sqlist *)malloc(sizeof(sqlist)); for(i=0;iL->data[i]=a[i]; L->length=n; } void initlist(sqlist *&L) { L=(sqlist *)malloc(sizeof(sqlist)); L->length=0; } void displist(sqlist *L,int n,int k) { int i,flag=0; for(i=0;ilength;i++) { if(L->data[i]==n) { flag=flag+1; cout<} if(ilength-1) cout>m; for(i=0;icin>>b[i]; crearelist(L1,b,m); cin>>t; cin>>c; displist(L1,t,c); return 0; } 单链表的插入操作的实现952 #include using namespace std; #include typedef struct Node { int data; struct Node *next; } Node; void Create(Node *&L,int a[],int n) { Node *s,*r; int i; L=(Node *)malloc(sizeof(Node)); r=L; for(i=0;i{ s=(Node *)malloc(sizeof(Node)); s->data=a[i]; r->next=s; r=s; } r->next=NULL; } void print(Node *L) { Node *s; s=L->next; coutnext; while(s!=NULL) { cout<<" "next; } } void charu(Node *&L,int i,int e) { int j=0; Node *p,*s; p=L; while(jnext!=NULL) { j++; p=p->next; } s=(Node *)malloc(sizeof(Node)); s->data=e; s->next=p->next; p->next=s; } int main() { int i,e,n,m; int a[1000]; Node *head; cin>>n; for(i=0;i{ cin>>a[i]; } Create(head,a,n); cin>>m>>e; if(m>n||m<1) { cout<<"error!"; return 0; } charu(head,m,e); print(head); return 0; } 单链表的删除操作的实现953 #include #include #include using namespace std; typedef struct node { int data; node *next; }Node; void init(Node *&L) { L=(Node *)malloc(sizeof(Node)); L->next=NULL; } void create(Node *&L,int a[],int n) { int i; Node *p,*q; init(L); q=L; for(i=0;i{ p=(Node *)malloc(sizeof(Node)); p->data=a[i]; p->next=NULL; q->next=p; q=p;