以下是一个使用静态方式建立链表,并输出所有节点身高和性别的C语言示例代码:
#include <stdio.h>
// 链表节点结构定义
struct Node {
int height;
char gender;
struct Node* next;
};
int main() {
// 静态建立链表
struct Node node1 = {175, 'M', NULL};
struct Node node2 = {165, 'F', NULL};
struct Node node3 = {180, 'M', NULL};
node1.next = &node2;
node2.next = &node3;
// 遍历链表并输出节点的身高和性别
struct Node* current = &node1;
while (current != NULL) {
printf("身高:%d cm,性别:%c\n", current->height, current->gender);
current = current->next;
}
return 0;
}
在上述代码中,首先定义了一个名为Node
的节点结构,其中包含了身高(height
)和性别(gender
)两个成员变量,以及一个指向下一个节点的指针(next
)。
然后,通过静态方式创建了三个节点node1
、node2
和node3
,分别表示链表中的三个节点,并通过给next
指针赋值来建立节点之间的关系。
接下来,在main
函数中,使用一个指针current
来遍历链表,初始值为指向链表的第一个节点node1
,然后在循环中,输出当前节点的身高和性别,并将指针current
更新为下一个节点,直到遍历完所有节点。
最后,程序会输出每个节点的身高和性别。
希望以上示例能帮助到你。如果有任何疑问,请随时提问。
建立逆序链表就是先输入的后输出,后输入的反而在前边,用一张图来表示的话(不喜勿喷[手动捂脸(/∇\)]):
示例代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct data
{
int sc;
char name[16];
data *next;
};
data *Creat()
{
int sc;
data *p, *head;
head = NULL;//不要忘记将head初始化为NULL,下边会用到
char name[16];
while (scanf("%d", &sc), sc != 0)
{
scanf("%s", name);
p = new data;
p->sc = sc;
strcpy(p->name, name);
/*两句话建链表*/
p->next=head; //1.p->next指向head,第一次时,head在上边赋为NULL,所以第一次时将p->next赋为NULL
head=p; //2.将head移至p位置
}
return head;
}
void Print(data *head)
{
data *p=head;
if(p==NULL)
{
printf("Not Found!\n");
return ;
}
for(p=head;p!=NULL;p=p->next)
printf("%d %s\n",p->sc,p->name);
return ;
}
int main(void)
{
data *p;
p=Creat();
Print(p);
return 0;
}