当前位置:首页 > 开发 > 数据库 > 正文

算法 单链的创建与删除

发表于: 2015-06-07   作者:换个号韩国红果果   来源:转载   浏览:
摘要: 先创建结构体 struct student { int data; //int tag;//标记这是第几个 struct student *next; }; // addone 用于将一个数插入已从小到大排好序的链中 struct student *addone(struct student *h,int x){ if(h==NULL) //??????
先创建结构体
struct student {
	int data;
	//int tag;//标记这是第几个
	struct student *next;
};
//  addone 用于将一个数插入已从小到大排好序的链中
struct student *addone(struct student *h,int x){
		if(h==NULL)  //??????
			printf("this is NULL");
		int tag=0;//假设还没添加进入链
		struct student *p=h,*temp=NULL,*temp1=NULL;
	    temp1=(struct student * )malloc(sizeof(struct student));//创建内存
		temp1->data=x;	
		printf("%d",temp1->data);
		
		if(h==NULL){//若链为空
			h=temp1;
			h->next=NULL;
			p=h->next;
		}
		while(p!=NULL){
			if(p->data>x){
				temp1->next=p;
				if(temp==NULL){	//若第一个元素就满足条件的话				
					h=temp1;
					tag=1;//已经插入
					break;
				}
				else{	//若不是第一个满足条件	
							//	printf("0");
					temp->next=temp1;
//printf("a");
					tag=1;
					//printf("b");
					break;

				}
			}

			temp=p;//本轮该数不满足条件将它的地址存起来方便下一个满足条件的数进行连接
			printf("r ");
			p=p->next;


		}
		if(!tag){//若循环完都没满足条件的说明只能插在最后
			
			temp1->next=NULL;
			temp->next=temp1;
tag=0;
		}

		return h;//插入完成返回指针
	}
//删除传入的与x所有相同的数
struct student *deleteEle(struct student *h,int x){
	struct student *p=h,*temp=NULL,*temp1=NULL; //init
	if(h==NULL){  /*若链表为空*/
		printf("null");
		return 0;
	}
		while(p!=NULL){ //当该元素不为空时
			
				if(p->data==x){ 
					if(temp==NULL){ //if it's the same and  it's the first one;free it and set head;
						printf("%d\n",h);
						h=p->next;
						free(p);
						p=h;  //and 更新指针p让它指向head 这样可以继续执行delete
						printf("%d\n",h); 
					}
					else{  //not the first one(include the last one!if the last one jump out! else continue!)
						temp->next=p->next;
						free(p);
						p=temp->next;
					}
					//temp1=p;
					
					continue;  //the p is right;don't need to go

				}
				temp=p;//if it's not the the same;continue the next one;
				p=p->next;
		}

			

		
		return h;//返回头指针
	}

算法 单链的创建与删除

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
这里介绍的马尔科夫链算法实现的功能是:读入一段英文文本,构造出由这个文本中语言使用情况而形成
由于考试需要,复习一下单链表的各种常见操作,直接上代码+注释,需要的可以参考下哈~ Code: [cpp]
题目: 在给定头结点的单链表中插入以及删除指定节点 这个题目我们遇到这个问题的时候可能会想这个
题目: 在给定头结点的单链表中插入以及删除指定节点 这个题目我们遇到这个问题的时候可能会想这个
顺序结构的缺点还是蛮大的,现在来看看单链表的插入与删除。 单链表中,在C语言可以用结构体指针描
参考:http://www.itxyz.net/3jk/c/2010/0820/11016.html 最近不是太忙,整理些东西,工作也许用得
这题目还是慢有意思的。 题目:如何判断单链表里面是否有环? 算法的思想是设定两个指针p, q,其中p
创建单链表的代码很简单,需要注意的一点是,一开始首先创建一个Node,然后让pPre指向它,并在之后
今天做了一道传说中的Google面试题,好吧,题目大致是这样的。 有如下的一个单链表结点定义 1 //链
在以后的操作部分,建议大家安装MySQL,方便练习。新版本MySQL的安装很简单,基本默认设置即可。这
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号