c语言:写一个函数建立一个有3名学生数据的单向动态链表

写一个函数建立一个有3名学生数据的单向动态链表。

解:程序:

#include<stdio.h>

#include<stdlib.h>

#define LEN sizeof(struct Student)

struct Student

{

long num;

float score;

struct Student *next;

};

int n;

struct Student *creat(void)//定义函数返回一个指向链表头的指针

{

struct Student *head;

struct Student *p1, *p2;

n = 0;

p1 = p2 = (struct Student *)malloc(LEN);

scanf("%ld,%f", &p1->num, &p1->score);

head = NULL;

while (p1->num!=0)

{

n = n + 1;

if (n == 1)

{

head = p1;

}

else

{

p2->next = p1;

}

p2 = p1;

p1 =(struct Student *)malloc(LEN);

scanf("%ld,%f", &p1->num, &p1->score);

}

p2->next=NULL;

return(head);

}

int main()

{

struct Student *pt;

pt = creat();//函数返回链表第1个结点的地址

printf("\nnum=%ld\nscore=%5.1f\n", pt->num, pt->score);//输出第1个结点的成员值

return 0;

}

结果:

1001,67

1003,89

1005,99

0,0

num=1001

score= 67.0

请按任意键继续. . .

时间: 2024-12-26 15:30:04

c语言:写一个函数建立一个有3名学生数据的单向动态链表的相关文章

数据结构 单向动态链表的建立和输出

#include<stdio.h> #include<stdlib.h> struct student{ long int num;//学号 float score;//成绩 struct student*next;//指向下一个学生 }; int n=0;//有n个学生数据 /*创建链表函数*/ struct student* creat() { struct student *p1,*p2,*head; p2=p1=(struct student*)malloc(sizeof(

C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。

作业的具体要求如下: 编写一个完整的程序,实现如下功能.(1)    输入10个无序的整数.(2)    用选择排序法将以上接收的10个无序整数按从大到小的顺序排序.(3)    要求任意输入一个整数,用折半查找法从排好序的10个数中找出该数,若存在,在主函数中输出其所处的位置,否则,提示未找到.提示:可定义input函数完成10个整数的输入,sort函数完成输入数的排序,search函数完成输入数的査找功能. 下面是具体代码:(本人懒,没写注释,不过仔细看代码,还是很简单的) 1 #inclu

C中怎么利用指针实现一个函数输入一个数组且输出一个数组

1 #include<stdio.h> 2 3 int num[]={1,3,5,45,67,18,64,82,34,62}; 4 5 int *pnum; 6 7 int *Fun(int *num);//该函数可以实现输入一个数组且输出一个数组的功能 8 9 void main() 10 { 11 char i=0; 12 //num=Fun(num);//这样写是错误的,因为num是一个指针常量,不能被赋值 13 pnum=Fun(num); 14 for(i=0;i<10;i++

编写一个函数判断一个整数是否为回文数。如果一个属从正的方向读和从反的方向读的结果相同,则该数就是回文数。

bool palindrome(int b){ int k = 0; char a[1000]; do { int c; c = b % 10; char d; for (int i = 0; i <= 9; i++) { if (c == i) { d = '0' + i; break; } } a[k++] = d; b = b / 10; } while (b != 0); // k = 字符长度 int j = 0; if (k == 1) { return true; } else {

写一个函数实现数组中的元素随机乱序排序

//原生JS写一个函数实现一个shuffle方法,将数组中的元素随机乱序排序 var shuffle = function(arr){ var len,t,rand; for(var i =0;len = arr.length,i<len;i++){ rand = parseInt(Math.random()*len);//parseInt(Math.random()*(len-1-0)+1);或者rand = Math.floor(Math.random()*(len-1-0)+1);即Mat

通过一个函数,操作一个结构体,实现对应函数功能

指针结构体一直是我的盲点,所以今天有必要整“清理门户”.此种通过一个函数操作一个结构体,实现对应函数功能,用法十分巧妙,使用得当可以使得代码可移植性和易懂性大大的增加,有人说过“代码注释的最高境界是程序的自述,而不是双斜杠然后后面跟着中英文的注释”.哈哈,说远了,下面开始进入今天的加油站,补充体力了. 1 // 头文件 2 #include <stdio.h> 3 4 // 函数声明 5 typedef struct _halDeviceFuncs_t 6 { 7 void (*pfnInit

c++函数返回一个数组

---恢复内容开始--- 调用某个函数时经常需要函数返回一个值,我们都知道c++ 的函数返回的是一个copy,所以当只返回一个值时不会出现什么问题,直接return一个copy就行了,但是如果返回一个数组,事情就变得有趣了,我最近就遇到了这个问题. 先附上代码吧: #include<iostream> using namespace std; //函数声明 int * fun1(); int * fun2(); void dispArr(int *arr ,int n); const int

【源码】用1,2,2,3,4,5这六个数字,写一个函数,打印出所有不同的排序,要求:4不能放在第三位,3与5不能相连(C语言实现)

帮朋友做的,好像是一个面试题.暴力方式. #include <stdio.h> #include <stdlib.h> #include <string.h> //判断这个数是不是由1.2.2.3.4.5几位数字组成 int func(int n) { int a[5] = {0}; for(int i = 0; i < 6; i++) { int bit = n % 10; n /= 10; switch(bit) { case 1: a[0]++; break

【C语言】写一个函数,实现字符串内单词逆序

//写一个函数,实现字符串内单词逆序 //比如student a am i.逆序后i am a student. #include <stdio.h> #include <string.h> #include <assert.h> void reverse_string(char *left, char *right) //连续的字符串逆序 { char temp; while (right > left) { temp = *left; *left = *rig