链表的一些操作---面试必备

         链表是一种物理存储单元上不连续的存储结构,数据元素之间是通过链表中的指针进行链接。链表是由一系列的节点(链表中每一个元素称为节点)组成,节点可以在运行时动态生成。每一个节点(node)都包含两个部分:一个是存储数据的数据域,另一个是存储下一个节点地址的指针域

一.创建链表

stud* create(int n){  //n表示需要创建多少个节点
    stud* p;     //p用来操作节点
    stud *h,*s;  //h头节点,s每次新创建节点
    h =(stud*)malloc(sizeof(stud)); //为头节点分配空间
    if(h == NULL){
        cout<<"内存分配失败!"<<endl;
        exit(0);
    }
    cout<<"请输入头节点:";
    char array[50];
    cin>>array;
    strcpy(h->name, array);   //给头节点数据域赋值
    h->next = NULL;           //头节点的指针域指向空
    p = h;                    //操作节点指向头节点,头节点是不变的,使用操作节点进行相应操作。
    for(int i =0;i<n-1;i++){
        s =(stud*) malloc(sizeof(stud));
        if(s == NULL){
            cout<<"新内存分配空间失败!"<<endl;
            exit(EXIT_SUCCESS);
        }
        p->next = s;   //上一个节点指向当前节点
        cout<<"输入第"<<i+2<<"节点的数据域(学生姓名):"<<"  ";
        cin>>s->name;
        s->next = NULL;
        p =s;
    }
    
    return h;
}

wKiom1XXF_mimfSUAAQC-BEUpyo990.jpg

你可能感兴趣的:(链表)