线性表的基本应用

一、 实验目的
1.掌握使用线性表解决一下具体问题。

二、 实验内容及要求
i.
实现有序集的并,差操作。
(1) *利用算法5建立两个非递减有序表A和B,并把它们合并成一个非递减有序表C。
(2) 在主函数中设计一个简单的菜单,分别测试上述算法。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0

typedef int Status;

typedef int Elemtype;

typedef struct Node
{
    Elemtype  data;
    struct Node *next;
}Lnode,*LinkList;

Status Init_Linklist(LinkList &L) {
    L = (LinkList) malloc(sizeof(Lnode));
    if (!L) return ERROR;
    L->next = NULL;
    return OK;
}
/*在有序单链表中插入元素,链表仍然有序,插入成功返回OK,插入失败返回ERROR*/
Status Insert_Linklist(LinkList L, int x) {

    LinkList p, q;
    p = L;
    q = p->next;
    while (q) {
        if (q->data > x) {
            LinkList s = (LinkList) malloc(sizeof(Lnode));
            s->data = x;
            s->next = q;
            p->next = s;
            return true;
        }
        p = q;
        q = q->next;
    }
    LinkList s = (LinkList) malloc(sizeof(Lnode));
    s->data = x;
    s->next = NULL;
    p->next = s;
    return OK;
}

/*创建非递减有序单链表,创建成功返回OK,创建失败返回ERROR*/
Status CreatOrder_Linklist(LinkList &L) {

    int x;
    Init_Linklist(L);
    scanf("%d", &x);
    while (x != -1) {
        Insert_Linklist(L, x);
        scanf("%d", &x);
    }
    if (L)
        return OK;
    return ERROR;
}
/*单链表遍历*/
void Disp_Linklist(LinkList L) {
    LinkList p;
    p = L->next;
    while (p) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}
void BingToOne(LinkList L1,LinkList L2,LinkList &L3){
    LinkList pa, pb, pc;
    pa = L1->next;
    pb = L2->next;
    pc = L3 = L1;
    while (pa && pb) {
        if (pa->data <= pb->data) {
            pc->next = pa;
            pc = pa;
            pa = pa->next;
        } else {
            pc->next = pb;
            pc = pb;
            pb = pb->next;
        }
    }
    pc->next = pa ? pa : pb;
    free(L2);
}


int main(){
    LinkList La,Lb,Lc;
    CreatOrder_Linklist(La);
//    Disp_Linklist(La);
    CreatOrder_Linklist(Lb);
//    Disp_Linklist(Lb);
    BingToOne(La,Lb,Lc);
Disp_Linklist(Lc);
system("pause");
    return 0;
}

posted @ 2022-06-30 13:50  WEIWEI1095  阅读(68)  评论(0)    收藏  举报
*/
作品集 //