• 单链表的结构 输入 输出


    链表图
    只要知道指针的作用就课以简单理解:

    #include<iostream>
    using namespace std;
    struct node 
    {
    	int date;
    	node *next;
    }
    node *p,*r,*head;
    int main()
    {
    	int x;
    	cin >> x;
    	head = new node;//申请头结点
    	while(x!=0)//读入不等于0的数
    	{
    		p = new node;//申请一个新的结点
    		p->date = x;
    		p->next=NULL:
    		r->next = p;//把新节点与前面的节点相连
    		r = p;//为指针向后移动
    		cin >> x;
    	}
    	p = head->next;//头指针没有数据,所以从第一个开始就好了
    	while(p->next!=NULL)//因为最后一个指针是空指针。
    	{
    		cout<<p->date<<" ";
    		p=p->next;
    	} 
    	cout<<p->date<<endl;//输出最后接结点的值也可以用do while语句
    	return 0;
    }
    

    单链表的操作
    1,查找满足一定条件的数据,

    p = head->next;//头指针没有数据,所以从第一个开始就好了
    	while(p->next!=NULL)//因为最后一个指针是空指针。
    	{
    		if();//写满足条件的数据,并处理它;
    		p=p->next;
    	} 
    

    2,取出链表中的第i个数据;

    p = head->next;//头指针没有数据,所以从第一个开始就好了
    	while(p->next!=NULL&&j<i)//因为最后一个指针是空指针。
    	{
    		p=p->next;
    		j++;
    	} 
    

    3,插入一个结点单链表中

    //核心代码
    void insert(node *head,int i,int x)//插入元素到第i个元素之前
    {
    	node *p,*s;
    	int j;
    	p = head;
    	j = 0;
    	while( p->next != NULL && j < i-1)
    	{
    		p = p->next;
    		j++;
    	}
    	if(p == NULL)//也就是到尾结点也没有找到
    		puts("no answer!");
    	else
    	{
    		s = new node;
    		s->date = x;
    		s->next = p->next;//交换地址插入
    		p->next = s;
    	}
    }
    

    4,删除单链表的元素

    //将上面添加结点的else换成如下代码
    
    s = p->next;//将结点拿出
    p->next = s->next;//p->next = p->next->next;//将链条和成一天去掉一定的位置的结点
    free(s);//释放空间,
    

    5,长度的遍历加1
    就行了

    追求吾之所爱
  • 相关阅读:
    多个漂亮的按钮样式和图片集合
    纯CSS3实现3D跳动小球
    visual studio 查找/替换对话框
    CSS实现弹出导航菜单
    javascript使浏览器关闭前弹出确认
    使用CSS3制作立体效果的导航菜单
    多个精美的导航样式web2.0源码
    jQuery实现侧边导航栏效果
    jQ函数after、append、appendTo的区别
    ASP.NET使用jQuery AJAX实现MD5加密实例
  • 原文地址:https://www.cnblogs.com/rstz/p/12393225.html
Copyright © 2020-2023  润新知