您的位置 首页 > 数码极客

指针结构体如何用scanf赋值——用scanf为结构体赋值

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

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-

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“指针结构体如何用scanf赋值,用scanf为结构体赋值,如何用scanf给结构体赋值,c语言结构体scanf赋值,结构体数组scanf赋值”边界阅读