20分,刚学链表,大佬帮忙看看,样例已过
查看原帖
20分,刚学链表,大佬帮忙看看,样例已过
841112
123311adqd楼主2023/7/19 17:55
#include <iostream>
using namespace std;
typedef struct node{
    int element;
    struct node* next;
}Node;
bool isExit(Node* header,int key){
    Node *p;
    p = header;
    int flag=0;
    while(p->next!=NULL){
        if(p->next->element==key)
            flag=1;
        p=p->next;
    }
    if(flag==0)
        return false;
    else
        return true;
}
void insertNode(Node* header,int x){
    Node* p=header;
    Node* tmp=new Node;
    tmp->element=x;
    tmp->next=NULL;
    while(p->next!=NULL){
        p=p->next;
    }
    p->next=tmp;
}
void insertFirst(Node* header,int x){
    Node* tmp=new Node;
    tmp->next=header->next;
    header->next=tmp;
    tmp->element=x;
}
void Delete(Node* header){
    Node* p1=header->next;
    Node* p2=p1->next;
    header->next=p2;
    free(p1);
}
int Size(Node* header){
    int count=0;
    Node* p=header;
    while(p->next!=NULL){
        count++;
        p=p->next;
    }
    return count;
}
int main() {
    int m,n;
    cin>>m>>n;
    Node *header=new Node;
    int count=0;
    if(m==1){
        int letter=-1;
        for(int i=1;i<=n;i++){
            int tmp;
            cin>>tmp;
            if(tmp!=letter){
                letter=tmp;
                count++;
            }
        }
    }
    else{
        for(int i=1;i<=n;i++){
            int letter;
            cin>>letter;
            if (i == 1) {
                insertNode(header,letter);
                count++;
            }
            else {
                if(isExit(header,letter)){}
                else{
                    if(Size(header)<m){
                        insertNode(header,letter);
                        count++;
                    }
                    else{
                        Delete(header);
                        insertFirst(header,letter);
                        count++;
                    }
                }
            }
        }
    }
    cout<<count<<endl;
}
2023/7/19 17:55
加载中...