c/c++语言开发共享C语言数据结构之线性表的链式存储结构

1.什么是线性表的链式存储结构 —链表存储结点:包括元素本身的信息,还有元素之间的关系逻辑的信息这个结点有:数据域和指针域一个指针域:指向后继结点, 单链表二个指针域: 指向前继结点,还有一个指向后继


1.什么是线性表的链式存储结构 —链表

存储结点:包括元素本身的信息,还有元素之间的关系逻辑的信息

这个结点有:数据域和指针域
一个指针域:指向后继结点, 单链表
二个指针域: 指向前继结点,还有一个指向后继结点 双链表

2.原理是:

  s=(linknode *)malloc(sizeof(linknode));//  		s->data=e;             //这里赋值了   		s->next=p->next;      //    		p->next=s;  //这里把指针s给到了p      

结点a-> 结点b -> 结点c->结点d

第一个数据:
p->data :a 对应的 p->next是 存储地址为 007531f0
第二个:
p->data :b 对应的 p->next是 存储地址为::00753200
第三个数据:
p->data :c 对应的 p->next是 存储地址为: 00753210


最后一个数据:

p->data :e 对应的 p->next是 存储地址为:00000000

这样在输出时:利用p=p->next进行循环
p->next是第一个,
p->next->next 是第二个
p->next->next->next 是第三个

  while(p!=null)  	{  		printf("%c",p->data);  		p=p->next;  		printf("地址变化:%pn",p);   	}  

这里的循环使p=p->next.(一直指向下一个结点)

  	while(j<i-1 && p!=null)  //指针p不为空,当i=2,3,4,5执行下面语句   	{  		j++;   //执行   		p=p->next;  //  	//	printf("%p",p);   	}  	  

  #include<stdio.h>  #include<malloc.h>  typedef char elemtype;    typedef struct lnode  {  	elemtype data;  	struct lnode *next;  //指针位置   }linknode;          bool listinsert(linknode *&l,int i,elemtype e)  {  	int j=0;  	linknode *p=l,*s; //参数指针 p,s结构体指针 ,指针赋值,赋值的是地址   	if(i<=0)  	return false;  	  	  	while(j<i-1 && p!=null)  //指针p不为空,当i=2,3,4,5执行下面语句   	{  		j++;   //执行   		p=p->next;  //  	//	printf("%p",p);   	}  	  	if(p==null)  	return false;  	  	  	else  	{  		s=(linknode *)malloc(sizeof(linknode));  		s->data=e;             //这里赋值了   		s->next=p->next;      //    		p->next=s;  //这里把指针s给到了p.  		  		printf("%pn",s->next);  		 	printf("%pn",p->next);  		   		 	  		return true;  	}  }    void displist(linknode *l)  {  	linknode *p=l->next;  //这个l->next就是p->next,  	//不为空,  	// p->next指向了s, 返回  a,循环  	// p->next->next,  ,指向了 b结点,引用的是 b  	// p->next->next->next ,指向c结点。  	while(p!=null)  	{  		printf("%c",p->data);  		p=p->next;  		printf("地址变化:%pn",p);   	}  	printf("n");  }        void initlist(linknode *&l)  {  	l=(linknode *)malloc(sizeof(linknode));  	  	printf("%pn",l);   	l->next=null;  //初始时指针值为null   }        int main()  {  		linknode *h;  	elemtype e;  	printf("单链表的基本运算如下:n");  	printf("  (1)初始化单链表hn");  	  	initlist(h);  	printf("  (2)依次采用尾插法插入a,b,c,d,e元素n");  	  	listinsert(h,1,'a'); // 	s->data=e;  bbb';         	//	                         s->next=p->next;      //    	//	                      p->next=s;    	//这里执行一次   	listinsert(h,2,'b');  	//这里:   	listinsert(h,3,'c');  	listinsert(h,4,'d');  	listinsert(h,5,'e');  	  	  	printf("  (3)输出单链表h:");  	displist(h);  	  	  	}                          

效果图:

C语言数据结构之线性表的链式存储结构

到此这篇关于c语言数据结构之线性表的链式存储结构 的文章就介绍到这了,更多相关c语言 数据结构内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多c/c++开发分享C语言数据结构之线性表的链式存储结构,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/965434.html

(0)
上一篇 2021年12月2日
下一篇 2021年12月2日

精彩推荐