结构体里有指针 scanf赋值_C++|链表中常见的链表节点指针操作
生活随笔
收集整理的這篇文章主要介紹了
结构体里有指针 scanf赋值_C++|链表中常见的链表节点指针操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
鏈表節(jié)點(diǎn)指針做左值時的賦值可以理解為左值指向或鏈接。
1 用帶指針的結(jié)構(gòu)體類型來描述鏈接結(jié)點(diǎn)
typedef struct Lnode{ ElemType data; /*數(shù)據(jù)域,保存結(jié)點(diǎn)的值 */struct Lnode *next; /*指針域*/}LNode; /*結(jié)點(diǎn)的類型 */2 結(jié)點(diǎn)的賦值(在堆上創(chuàng)建節(jié)點(diǎn))
LNode *p, *q;p=(LNode*)malloc(sizeof(LNode)); p->data=20; p->next=NULL ;3 指針指向或移動
LNode *Locate_Node(LNode *L, int key)/* 在以L為頭結(jié)點(diǎn)的單鏈表中查找值為key的第一個結(jié)點(diǎn) */ { LNode *p=L–>next; while ( p!=NULL&& p–>data!=key) p=p–>next; // 指針一移一個節(jié)點(diǎn) if (p–>data==key) return p; else { printf("所要查找的結(jié)點(diǎn)不存在!!"); retutn(NULL); }}4 結(jié)點(diǎn)的重新鏈接到某一個節(jié)點(diǎn)
5 結(jié)點(diǎn)的重新鏈接到某一個節(jié)點(diǎn)的下一個節(jié)點(diǎn)
LNode *create_LinkList(void)/* 頭插入法創(chuàng)建單鏈表,鏈表的頭結(jié)點(diǎn)head作為返回值 */ { int data ;LNode *head, *p;head= (LNode *) malloc( sizeof(LNode));head->next=NULL; /* 創(chuàng)建鏈表的表頭結(jié)點(diǎn)head */ while (1) { scanf(“%d”, &data) ;if (data==32767) break ;p= (LNode *)malloc(sizeof(LNode));p–>data=data; /* 數(shù)據(jù)域賦值 */p–>next=head–>next ; //新建節(jié)點(diǎn)p鏈接到頭結(jié)果的下一個節(jié)點(diǎn),這里是NULL;head–>next=p ; // 頭節(jié)點(diǎn)鏈接到p/* 鉤鏈,新創(chuàng)建的結(jié)點(diǎn)總是作為第一個結(jié)點(diǎn) */}return (head);}void Insert_LNode(LNode *L,int i, ElemType e)/* 在以L為頭結(jié)點(diǎn)的單鏈表的第i個位置插入值為e的結(jié)點(diǎn) */ { 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的下一個節(jié)點(diǎn)(插入節(jié)點(diǎn)鏈后一段) p–>next=q; //p鏈接到q(節(jié)點(diǎn)前一段鏈插入節(jié)點(diǎn)) }}鏈表節(jié)點(diǎn)操作要把握一個原則:先鏈后斷;
-End-
總結(jié)
以上是生活随笔為你收集整理的结构体里有指针 scanf赋值_C++|链表中常见的链表节点指针操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何分辨甲醛和乙醛?
- 下一篇: 从门的哪里能看出是哪个牌子的实木烤漆门?