问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言 建立链表

发布网友 发布时间:2022-05-10 16:29

我来回答

4个回答

热心网友 时间:2023-05-23 17:13

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define ok 1
#define error 0
#define flag 0

typedef int status;

//结构体定义
typedef struct LNode{
char name[16];
int id;
int grade;
struct LNode *next;
}LNode , *LinkList;
int n=0; //n为节点数

//函数声明
status CreatList_L(LinkList &L); //创建链表
status ShowList_L(LinkList L); //展示链表

//主函数
void main()
{
printf("\n\n");;
printf("===============zzb链表系统.cpp=============\n\n");
LinkList L;
CreatList_L(L);
int b;
int flag1=1;
while (flag1!=0)
{
printf("请选择进行哪项操作:1.展示链表2.删除指定位置学生信息3.增加指定位置学生信息4.查找指定id学生信息.5.修改学生信息\n");
scanf("%d",&b);
switch (b)
{
case 1:
ShowList_L(L);
break;
break;
default: printf("enter number error!");
}
printf("是否继续操作(否0/是任意常数):\n");
scanf("%d",flag1);
}
printf("all down!\n");
}//main()

//各功能函数定义
status CreatList_L(LinkList &L)
{
if(!(L=(LinkList)malloc(sizeof(LNode))))
{
printf("error!\n"); return (error);
} //头指针L
L->next=NULL; //L->next指向NULL,头结点一般不储存信息
LinkList p,tail; //指向当前节点指针P与尾指针tail
tail=L; //定义尾指针指向
printf("输入姓名,学号,成绩创建链表(以/0 0 0/结束):\n");
p=(LinkList)malloc(sizeof(LNode));
scanf("%c",&p->name);
scanf("%d",&p->id);
scanf("%d",&p->grade);
while(p->id!=flag) //进行对节点数值送数,并以id为0作为结束标志
{
tail->next=p;
p->next=NULL;
tail=p;
n++;
p=(LinkList)malloc(sizeof(LNode)); //生成新节点
scanf("%c",&p->name);
scanf("%d",&p->id);
scanf("%d",&p->grade);
}
printf("创建链表成功!\n");
return(ok);
}//CreateLisk_L()

status ShowList_L(LinkList L)
{
LinkList m; //m为指向L->next的指针
m=L->next;
int i=0;
printf("学生信息如下:\n");
printf("姓名\t学号\t成绩:\n");
while(i<n)
{
printf("%c\t%d\t%d",m->name,m->id,m->grade);
i++;
m=m->next;
}
printf("输出完毕!\n");
return (ok);
}//ShowList_L()

应该完成你的要求,你还可以在之后加功能~追问各种错误,没怎么学过链表,基本不会改

追答

原本写的C++以及所有功能,刚刚删除+修改可能有点问题,,,

一、你把错误粘出来看

二、下面是C完整代码,自己看——

热心网友 时间:2023-05-23 17:13

参照1楼的应该可以修改成你想要得啊。

热心网友 时间:2023-05-23 17:13

# include<stdio.h>
# include<stdlib.h>

struct student //学生节点

{
char* Num; //学号

char* Name; //姓名

char* Score; //成绩

student* next;
};

void creatS(student*&stu) //创建学生信息

{
struct student*stu1=stu;
stu1=(struct student*)malloc(sizeof(struct student));
stu1->next=null;
char* data;
data=(char *)malloc(sizeof(char));

scanf("s%",data);

while(1)
{
struct student* temp=(struct student*)malloc(sizeof(struct student));
if(*data=="000") break;
temp->Num=data;

data=(char *)malloc(sizeof(char));
scanf("s%",data);
if(*data=="000") break;
temp->Name=data;
data=(char *)malloc(sizeof(char));
scanf("s%",data);
if(*data=="000") break;
temp->Score=data;
stu1->next=temp;
stu1=temp;

data=(char *)malloc(sizeof(char));
scanf("s%",data);
}
printf("学生信息录入完毕!\n")

return ;

}

void searchS(struct student* stu, char* sN) //根据学号查询信息

{
while(*(stu->Num)!=*sN)
stu=stu->next;
printf("该学生的信息是:%s%s",*(stu->Name);*(stu->Score));

}

int main()
{
struct student* stu;
creatS(stu);
char* number=(char *)malloc(sizeof(char));
printf(“输入学号查询学生信息!\n”);
scanf("s%",number);
searchS(stu,number);
return 0;

}

热心网友 时间:2023-05-23 17:14

#include<stdio.h>
#include<stdlib.h>

struct chain
{
int value;
struct chain *next;
};

struct chain *create()
{
struct chain *head,*tail,*p;
int x;
head = tail = NULL;
while(scanf("%d",&x)==1)
{
p=(struct chain*)malloc(sizeof(struct chain));
p->value=x;
p->next=NULL;
if(head==NULL)
head = tail = p;
else
tail=tail->next=p;
}
return head;
}

struct chain *inlink(struct chain *head,int a,int b) //int a代表要插入的节点,int b代表创建节点的数据域
{
struct chain *p,*q,*s;
s = (struct chain *)malloc(sizeof(struct chain));
s->value=b;
if(head==NULL)
{
head = s;
head->next = NULL;
}
if(head->value == a)
{
s->next=head;
head = s;
}
else
{
p=head;
while((p->value!=a)&&(p->next!=NULL))
{
q=p;
p=p->next;
}
if(p->value == a)
{
q->next = s;
s->next = p;
}
else
{
p->next=s;
s->next=NULL;
}
}
return (head);
}

struct chain *dellink(struct chain *head,int a) //int a代表要删除的节点
{
struct chain *q,*p;
if(head == NULL)
printf("找不到节点!\n");
else if(head->value == a)
{
p = head;
head = head->next;
}
else
{
p=head;
while((p->value!=a)&&(p->next!=NULL))
{
q=p;
p=p->next;
}
if(p->value != a)
printf("链表不存在此节点!\n");
else
{
q->next = p->next;
free(p);
}
}
return (head);
}

void main()
{
struct chain *p,*q;
q=create(); //链表的创建;
//q=inlink(create(),3,1); //链表的插入;
//q=dellink(create(),2); //链表的删除;
while(q){ //输出链表;
printf("%d\n",q->value);
p=q->next;
free(q);
q=p;
}
}
这样可以么?追问和我的要求基本都不一样吧。。。。。。。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 排序链表实现,用C实现 我今年26刚发烧好了,现在上半身肉皮一碰就疼痛,手脚还发麻是什么问题? 两腿发麻发酸发木,是什么症状 山东省荣成市石岛管理区属于什么级别? 威海市荣成市石岛镇寨北路秋石南路属于哪个街道 喝酒后为什么肉皮发麻 羊肉的炒法以及怎么去味道,急急急!!! 听说乳山银滩划给威海南海了,还听说荣成石岛也划给南海新区了,真的假的啊 石岛和威海的关系? 威海小石岛跟石岛是一个地方吗 石岛属于威海还是大连 石岛离威海市区远吗?是威海的一个县还是一个乡?到市内有公交直达吗? 威海石岛湾属于哪个区 身体麻木怎么回事? 我的双小腿麻木快一年了,肉皮发紧的感觉医院做过脉彩超没事该怎么办? 高速电机用什么黄油.? 我左大腿侧面肉皮有些木,知觉不敏感,用手抓神经不敏感,请问啥原因? 请问左腿外侧大腿肉皮麻木,是怎么回事? 脸头皮发紧身上肉皮发木是什么病? 广东省华海糖业发展有限公司中心学校怎么样? 我们聊聊游戏美术设计风格有哪些 实现链表(C语言) 想学游戏美术设计专业,谁知道哪家学校好啊 ? C语言链表原理 python如何敏捷开发 如何实现大量发邮件不会被封 你好,请问怎么给5000人群发邮件,你说的华思具体指什么软件呢 怎样一天发送几千封邮件 qq邮箱如何一次5000个邮件 每天需要发送3000-5000封邮件我需要用什么来发?每天都发,我不想找代发,回答者也不要再发广告, 每天有5000封推广信,企业邮箱哪个好用?会被关帐户的邮箱不要来烦人 怎么把手机上的视频通过蓝牙发送到电视上 怎么种好 家养草莓 在脖子上种下草莓应该怎么发QQ动态? 生日是阳历97年12月05号的是什么星座 15年婚姻是什么婚? 15年算什么婚?20 97年12月05号是什么星座的 1997年阴历12月5日出生属于什么星座? 1997年12月5日,*办厅发出什么,强调要加强营养人才的培训及营养教育?