tiaya01 2021-10-22 17:01 采纳率: 85.7%
浏览 10
已结题

我想问一下,在尾部追加新成员怎么写main()函数的代码啊?


#include<stdio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;

#define MAX 50
#define error 1

typedef int Elemtype;
typedef struct {
    Elemtype* elem;//动态数组基址
    int len;//当前长度
    int listsize;//总共分配的储存容量
}SqList;

void InitSset(SqList &L);
void AppendS(SqList &L);
void Insertelem(SqList &L);
void Deletlist(SqList &L,int i);
void mergelist(SqList &LA,SqList &LB,SqList &LC);
void OutS(SqList L);

int main(){
    int i;
    int n;//循环次数,数组的大小
    SqList s;
    cout << "请输入顺序表元素的个数:" << endl;
    InitSset(s);
    cin >> n;
    cout << "请输入顺序表的元素:" << endl;
    //循环n次
    while(n--)
        AppendS(s);    
    Insertelem(s);
    OutS(s);
    cout << endl;
    cout<<"请输入要删除的顺序表元素位置:"<<endl;
    cin>>i;
    Deletlist(s,i);
    OutS(s);
    cout << endl;
    SqList LB,LC;
    InitSset(LB);
    InitSset(LC);
    cout << "请创建你要合并的顺序表LB:" << endl;
    int h;
    cout << "请输入LB的元素个数:" << endl;
    cin >> h;
    cout << "你输入的元素分别为:" << endl;
    for(int a=0;a<h;a++){
        cin>>LB.elem[a];
        LB.len++;
    }
    mergelist(s,LB,LC);
    cout<<"合并后:"; 
    OutS(LC);
    system("pause");
    return 0;
}
//初始化函数
void InitSset(SqList &L){
    L.elem = (Elemtype*)malloc(MAX * sizeof(Elemtype));
    L.len = 0;
    L.listsize = MAX;
}
//在最后插入一个成员
void AppendS(SqList &L){
    Elemtype new1;    
    cin >> new1;
    L.elem[L.len] = new1;
    L.len++;
}
//插入成员
void Insertelem(SqList &L){
    int i;
    Elemtype e;
    Elemtype *p ,*q;
    cout << "输入插入的位置:";
    cin >> i;
    i = i - 1;
    
    if (L.len > MAX - 1 || L.len  < i || i < 0){
        cout << "数组超限" << endl;
    }
    else{
        cout << "输入插入数据:" << endl;
        cin >> e;
        q = &(L.elem[i]);
        for (p = &(L.elem[L.len - 1]); p >= q; p--)
            *(p + 1) = *p;
        *q = e;
        L.len++;
    }

}
//删除成员
void Deletlist(SqList &L,int i){
    Elemtype e;
    Elemtype *p,*q;
    if(i<0||i>L.len-1) 
            exit(error);
    q=&(L.elem[i]);
    e=*q;
    p=L.elem+L.len-1;
    
    for(q++;q<=p;q++) 
        *(q-1)=*q;
    L.len--;
}
//顺序表的有序合并
void mergelist(SqList &LA,SqList &LB,SqList &LC){
    Elemtype *pa,*pb,*pc,*pa_last,*pb_last;
    LC.len=LA.len+LB.len;//新表的长度为两个表的长度之和
    LC.elem=(Elemtype *)malloc(LC.len*sizeof(Elemtype));//分配空间
    pc=LC.elem;//分别指向第一个元素
    pa=LA.elem;
    pb=LB.elem;
    pa_last=LA.elem+LA.len-1;//指向最后一个元素
    pb_last=LB.elem+LB.len-1;
    while((pa<=pa_last)&&(pb<=pb_last)){ 
        if(*pa<=*pb)
            *pc++=*pa++;//进行比较然后进行赋值
        else
            *pc++=*pb++;
    }
    while(pa<=pa_last)
        *pc++=*pa++;//把剩下的逐一插入
    while(pb<=pb_last)
        *pc++=*pb++;
}
//输出
void OutS(SqList L){
    int i;
    for (i = 0; i < L.len; i++)
        cout << L.elem[i] << " ";
}

我想问一下,在尾部追加新成员怎么写main()函数的代码啊?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月30日
    • 创建了问题 10月22日

    悬赏问题

    • ¥300 寻抓云闪付tn组成网页付款链接
    • ¥15 请问Ubuntu要怎么安装chrome呀?
    • ¥15 视频编码 十六进制问题
    • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
    • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
    • ¥15 FileNotFoundError 解决方案
    • ¥15 uniapp实现如下图的图表功能
    • ¥15 u-subsection如何修改相邻两个节点样式
    • ¥30 vs2010开发 WFP(windows filtering platform)
    • ¥15 服务端控制goose报文控制块的发布问题