线性结构的顺序存储和链式存储的实现代码(二)

      单链表的简单代码及解释(头插法为例)

       头插法的中心思想是:两个结点类型的指针变量,一个用来存放新开辟空间的地址,另一个用来存放,开辟的空间的首地址,这些开辟的空间的连接时通过这两个指针变量连接起来的。
       尾插法的中心思想是:三个结点类型的指针变量,一个用来存放第一个开辟空间的地址(head指针),一个用来存放最后一个开辟空间的地址(相连接中的最后一个。tail指针),一个用来存放开辟新空间的地址(p指针),tail和p把这些开辟的空间连接起来。

       以头插法方式编写链表的建立和输出函数:
链表的数据元素的结构类型:
struct Node  //为了让大家更好的理解程序,就没有用typedef关键字
{
      char data;   //存放输入字符
      struct Node * next;  //存放结点地址
};

//初始化输入函数:
void inpu(struct Node* &l) //struct Node *说明的是变量的类型,&说明的是传参形式
{
       char ch;   //存放输入的字符
       struct Node * p;//用于存放新开辟空间的地址 
       
       printf("\n\n\n\n\n请输入您的字符:\n"); 

       while((ch=getchar())!='$')//当输入'$'字符时,输入结束
            {
               p=(struct Node *)malloc(sizeof(struct Node));//动态的开辟一个空间
       p->data=ch;//向开辟空间的data中存放输入
               //把新开辟的结点连接到链表中
               p->next=l;
       l=p;   
       
             }
}

//全部输出字符函数:
void prin(struct Node *l)
  {
        l=l->next;   //因为我们头结点的data中没有存放数据,所以遇过去
while(l->next!=NULL)   //判断结点是否存在
  {
      cout<<"\n     "<<l->data;    //输出字符
      l=l->next;   //指向下一个结点的地址
  }
cout<<"\n\n操作完成!\n";
  }

//主函数
void main()
{
     struct Node * head;  //存放头结点地址的指针
      
     head=(struct Node *)malloc(sizeof(struct Node));//开辟头结点
     head->next=NULL;//头结点中的next为NULL
       
     inpu(head); //调用自定义输入函数
     prin(head); //调用自定义输出函数
}

      插入、删除、查找等操作,可以自己试着完成一下!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值