龙空技术网

C++|链表中常见的链表节点指针操作

小智雅汇 577

前言:

而今看官们对“typedef struct lnode”大致比较注重,姐妹们都想要剖析一些“typedef struct lnode”的相关资讯。那么小编同时在网络上汇集了一些对于“typedef struct lnode””的相关文章,希望同学们能喜欢,看官们一起来了解一下吧!

链表节点指针做左值时的赋值可以理解为左值指向或链接。

1 用带指针的结构体类型来描述链接结点

typedef struct Lnode{ ElemType data; /*数据域,保存结点的值 */struct Lnode *next; /*指针域*/}LNode; /*结点的类型 */
2 结点的赋值(在堆上创建节点)
LNode *p, *q;p=(LNode*)malloc(sizeof(LNode)); p->data=20; p->next=NULL ;
3 指针指向或移动
LNode *Locate_Node(LNode *L, int key)/* 在以L为头结点的单链表中查找值为key的第一个结点 */ {  LNode *p=L–>next; while ( p!=NULL&& p–>data!=key)  p=p–>next; // 指针一移一个节点 if (p–>data==key)  return p; else  {  printf("所要查找的结点不存在!!\n");  retutn(NULL);  }}
4 结点的重新链接到某一个节点5 结点的重新链接到某一个节点的下一个节点
LNode *create_LinkList(void)/* 头插入法创建单链表,链表的头结点head作为返回值 */ { 	int data ;	LNode *head, *p;	head= (LNode *) malloc( sizeof(LNode));	head->next=NULL; /* 创建链表的表头结点head */ 	while (1) 	{ 		scanf(“%d”, &data) ;		if (data==32767) break ;		p= (LNode *)malloc(sizeof(LNode));		p–>data=data; /* 数据域赋值 */		p–>next=head–>next ; //新建节点p链接到头结果的下一个节点,这里是NULL;		head–>next=p ; // 头节点链接到p		/* 钩链,新创建的结点总是作为第一个结点 */	}	return (head);}void Insert_LNode(LNode *L,int i, ElemType e)/* 在以L为头结点的单链表的第i个位置插入值为e的结点 */ {  int j=0; LNode *p,*q; p=L–>next ; while ( p!=NULL&& j<i-1)  { p=p–>next; j++; }  if (j!=i-1)  printf("i太大或i为0!!\n ");  else {  q=(LNode *)malloc(sizeof(LNode)); q–>data=e;  q–>next=p–>next; //q链接到p的下一个节点(插入节点链后一段) p–>next=q; //p链接到q(节点前一段链插入节点) }}

链表节点操作要把握一个原则:先链后断;

-End-

标签: #typedef struct lnode