链表节点指针做左值时的赋值可以理解为左值指向或链接。
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("所要查找的结点不存在!!"); 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&& jnext; j++; } if (j!=i-1) printf("i太大或i为0!! "); else { q=(LNode *)malloc(sizeof(LNode)); q–>data=e; q–>next=p–>next; //q链接到p的下一个节点(插入节点链后一段) p–>next=q; //p链接到q(节点前一段链插入节点) }}链表节点操作要把握一个原则:先链后断;
-End-