数据结构——链表C/C++实现

来源:互联网 发布:广州锋泽网络垃圾 编辑:程序博客网 时间:2024/06/06 23:57

直接上代码

MyList.h 头文件

#ifndef _MyList_H#include<cstdio>struct Node{    int val;    Node* next;    Node():val(0),next(NULL){}    Node(int i):val(i),next(NULL){}};typedef struct Node* ptrNode;typedef ptrNode MyList;typedef ptrNode Position;bool isEmpty(MyList L);bool isLast(Position p,MyList L);Position find(int x, MyList L);void del(int x,MyList L);Position findPrevious(int x, MyList L);void insert(int x, MyList L, Position p);void push_front(int x, MyList L); // 头插void push_back(int x, MyList L);//尾插void deleteList(MyList L);Position Header(MyList L);Position First(MyList L);void printList(MyList L);#endif

MyList.cpp

#include "MyList.h"#include <cstdio>bool isEmpty(MyList L){    return L->next==NULL;}bool isLast(Position p,MyList L){    return p->next == NULL;}Position find(int x, MyList L){    Position tmp = L->next;    while(tmp!=NULL && tmp->val != x){        tmp = tmp->next;    }    return tmp;}Position findPrevious(int x, MyList L){    Position P = L;    while(P->next!=NULL && P->next->val != x){        P = P->next;    }    return P;}void del(int x,MyList L){    Position p = findPrevious(x,L);    if(!isLast(p,L)){        Position tmp = p->next;        p->next = tmp->next;        delete(tmp);    }}void insert(int x, MyList L, Position p){    Position tmp;    tmp = new Node;    if(tmp == NULL){        printf("Out of space.\d");        return;    }    tmp->val = x;    tmp->next = p->next;    p->next = tmp;} // 头插void push_front(int x, MyList L){    Position tmp = new Node(x);     tmp->next = L->next;    L->next = tmp;}//尾插void push_back(int x, MyList L){    Position tmp = new Node(x);    Position p= L;    while(p->next != NULL) p = p->next;    p->next = tmp;}void deleteList(MyList L){    Position p = L->next;    while(p != NULL){        Position next = p->next;        L->next = next;        delete p;        p = next;    }    //delete L;}Position Header(MyList L){    return L;}Position First(MyList L){    return L->next;}void printList(MyList L){    Position p=L->next;    while(p != NULL){        printf("%d ",p->val);        p = p->next;    }    printf("\n");}

main.cpp

#include<iostream>#include<cstdio>#include<time.h>#include "MyList.h"using namespace std;int main(){    MyList header = new Node;    srand(time(NULL));    for(int i=0; i<10; i++){        int val = rand()%100;        push_back(val, header);    }    printList(header);    deleteList(header);    for(int i=0; i<10; i++){        push_front(i+1,header);    }    printList(header);      Position p = find(3,header);    printf("%d\n",p->val);    del(3,header);    printList(header);    return 0;}
0 0
原创粉丝点击