C语言编程题—编写程序,函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请完善函数Creatlink的函数体,使该程序能得出正确的结果

C语言编程题

** 编写程序,函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请完善函数Creatlink的函数体,使该程序能得出正确的结果**

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h>
typedef struct aa 
{ 	int data; 
	struct aa *next; 
} NODE; 
NODE *Creatlink(int n, int m) //创建带头结点的单链表
{ 	
 	NODE *h,*p,*q;
	int i;
	h=q=(NODE*)malloc(sizeof(NODE) );  //创建头结点,同时表尾也是它
	h->next=NULL;
	for(i=1;i<=n;i++)
	{
		p=(NODE*)malloc(sizeof(NODE) );
		p->data=rand()%m;
		p->next=NULL;
		q->next=p;
		q=p;
	}
	return h;
} 
void outlink(NODE *h)  //输出链表
{ 	NODE *p; 
	p=h->next; 
	printf("\n\nTHE LIST :\n\n HEAD "); 
	while(p) 
	{ 	printf("->%d ",p->data); 
		p=p->next; 
	} 
	printf("\n"); 
} 
void main() 
{ 	NODE *head; 
	head=Creatlink(8,22); 
	outlink(head); 
}

运行示例
在这里插入图片描述

C语言不迷路。
需要分析可以到微信公众号发送问题或者在评论区留言,有问必答!
想了解我的C语言学习笔记等更多知识请关注公众号:

量子云基地
在这里插入图片描述

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
假设学生节点的结构为: ``` typedef struct StudentNode { int id; // 学号 char name[20]; // 姓名 int age; // 年龄 struct StudentNode *next; // 下一个节点指针 } StudentNode; ``` 创建链表函数: ``` StudentNode* Begin_CreatLink() { StudentNode *head = NULL, *p = NULL, *tail = NULL; int n = 0; printf("输入学生人数:"); scanf("%d", &n); for (int i = 1; i <= n; i++) { p = (StudentNode*)malloc(sizeof(StudentNode)); printf("输入第%d个学生的信息:\n", i); printf("学号:"); scanf("%d", &(p->id)); printf("姓名:"); scanf("%s", p->name); printf("年龄:"); scanf("%d", &(p->age)); p->next = NULL; if (head == NULL) { head = p; tail = p; } else { tail->next = p; tail = p; } } return head; } ``` 插入节点函数: ``` void Begin_AddNew(StudentNode *head) { int id; StudentNode *p = head; printf("输入要插入的学生学号:"); scanf("%d", &id); while (p != NULL) { if (p->id == id) { StudentNode *newNode = (StudentNode*)malloc(sizeof(StudentNode)); printf("输入要插入的学生信息:\n"); printf("学号:"); scanf("%d", &(newNode->id)); printf("姓名:"); scanf("%s", newNode->name); printf("年龄:"); scanf("%d", &(newNode->age)); newNode->next = p->next; p->next = newNode; printf("插入成功!\n"); return; } p = p->next; } printf("未找到该学生,插入失败!\n"); } ``` 删除节点函数: ``` void Begin_Delete(StudentNode *head) { int id; StudentNode *p = head, *pre = NULL; printf("输入要删除的学生学号:"); scanf("%d", &id); while (p != NULL) { if (p->id == id) { if (pre == NULL) { head = p->next; } else { pre->next = p->next; } free(p); printf("删除成功!\n"); return; } pre = p; p = p->next; } printf("未找到该学生,删除失败!\n"); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lightHos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值