zoukankan      html  css  js  c++  java
  • 带头结点的单链表

    代码:

    /*
     *带头节点的单链表
     */
    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    typedef struct ListNode
    {
        int data;
        struct ListNode* next;
    } Node,*PNode;
    
    //新建结点,num表示结点个数
    PNode NewNode(int num)
    {
       //新建头结点
        PNode head=(PNode)malloc(sizeof(Node));
        if(head==NULL)
        {
            cout<<"头节点内存分配失败!";
            exit(0);
        }
    
        PNode temp=head;
        temp->next=NULL;
    
        for(int i=0; i<num; i++)
        {
            //当前结点的数据
            int num;
            cin>>num;
            //新节点
            PNode node=(PNode)malloc(sizeof(Node));
            if(node==NULL)
            {
                cout<<"节点内存分配失败!";
                exit(0);
            }
            node->data=num;
    
            temp->next=node;
            temp=node;//使temp指向新建结点
        }
        return head;//返回头结点
    }
    //删除结点,temp表示删除链表的第几个结点
    void Free(PNode node,int temp)
    {
        int num=1;
        while(temp!=num)
        {
            node=node->next;
            num++;
        }
        node->next=node->next->next;
    }
    //在尾部插入结点,temp表示插入的数据
    void Insertoftail(PNode node,int temp)
    {
        while(node->next!=NULL)//注意判断条件是node->next!=NULL;指向最后一个结点就停止
        {
            node=node->next;
        }
        PNode New=(PNode)malloc(sizeof(Node));
        if(New==NULL)
        {
            cout<<"节点内存分配失败!";
            exit(0);
        }
        New->data=temp;
        node->next=New;
    }
    //根据链表及数据,查找所在位置,只能查找第一个找到的
    void Search(PNode node,int temp)
    {
        node=node->next;
        int num=0;
        while(node!=NULL)
        {
            num++;
            if(node->data==temp)
            {
                cout<<"您查找的数字"<<temp<<""<<num<<""<<endl;
                return;
            }
            node=node->next;
        }
        cout<<"未找到!"<<endl;
    }
    //输出链表数据
    void Printf(PNode node)
    {
        node=node->next;//头节点需要跳过
        while(node!=NULL)
        {
            cout<<node->data<<" ";
            node=node->next;
        }
        cout<<endl;
    }
    int main()
    {
        ListNode* head=NewNode(7);//新建长度为7的链表,逐个输入数据
        Printf(head);//输出当前链表数据
        Search(head,8);//查找数据为8的结点
        Insertoftail(head,99);//在尾部插入数据为99的结点
        Printf(head);//输出当前链表数据
        Free(head,1);//删除第一个结点
        Printf(head);//输出当前链表数据
        return 0;
    }

     实验截图:

  • 相关阅读:
    n维向量空间W中有子空间U,V,如果dim(U)=r dim(V)=n-r U交V !={0},那么U,V的任意2组基向量的组合必定线性相关
    生成相关矩阵
    线性变换与基变换
    关于基变换
    证明 U and V={0}时 dim(U+V)=dim(U)+dim(V)
    开发框架继承窗体添加按钮并授权
    线性方程组与基尔霍夫定律
    按绑定数据设置单元格风格
    威伦TK6070iQ触摸屏的使用
    s7-200 PID控位
  • 原文地址:https://www.cnblogs.com/handsometaoa/p/12067042.html
Copyright © 2011-2022 走看看