Problem A: 实现链表(线性表)
Posted 青衫客36
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Problem A: 实现链表(线性表)相关的知识,希望对你有一定的参考价值。
Problem A: 实现链表(线性表)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 443 Solved: 293
[Submit][Status][Web Board]
Description
(线性表)顺序结构线性表LA与LB的结点关键字为整数。LA与LB的元素按非递减有序,线性表空间足够大。试用给出一种高效算法,将LB中元素合到LA中,使新的LA的元素仍保持非递减有序。高效指最大限度的避免移动元素。
Input
输入LA长度m:7
输入数据:3 7 11 15 57 68 99
输入LB长度n:7
输入数据:6 7 8 9 10 23 67
Output
3 6 7 8 9 10 11 15 23 57 67 68 99
Sample Input
7
4 6 7 9 10 16 23
8
1 2 4 7 8 13 15 44
Sample Output
1 2 4 6 7 8 9 10 13 15 16 23 44
#include<stdio.h> typedef struct student { int data; struct NODE *next; }Node; Node *insert_node(Node *head,int b) { Node *pre1=head,*pre2,*p; p=(Node *)malloc(sizeof(Node)); p->data=b; if(head==NULL) { head=p; p->next=NULL; } else if(p->data<head->data) { head=p; p->next=pre1; } else { while((pre1!=NULL&&p->data>=pre1->data)) { pre2=pre1; pre1=pre1->next; } p->next=pre2->next; pre2->next=p; } return head; } void print(Node *head) { Node *p,*q; p=head; q=p->next; while(q!=NULL) { if(p->data!=q->data) printf("%d ",p->data); p=p->next; q=p->next; } printf("%d ",p->data); } int main() { int a[81],b[81]; int m,n,i,j; Node *head=NULL; scanf("%d",&m); for(i=0;i<m;i++) scanf("%d",&a[i]); scanf("%d",&n); for(j=0;j<n;j++) scanf("%d",&b[j]); for(i=0;i<m;i++) head=insert_node(head,a[i]); for(j=0;j<n;j++) head=insert_node(head,b[j]); print(head); return 0; }
以上是关于Problem A: 实现链表(线性表)的主要内容,如果未能解决你的问题,请参考以下文章