用C语言编写一个程序,通过链表的建立、输出、删除、插入等基本操作(链表是带头链表) 50
用C语言编写一个程序,通过链表的建立、输出、删除、插入等基本操作,实现学员成绩管理,从键盘输入学员信息,学员信息用结构体表示,包括学号、姓名、年龄、性别、成绩...
用C语言编写一个程序,通过链表的建立、输出、删除、插入等基本操作,实现学员成绩管理,从键盘输入学员信息,学员信息用结构体表示,包括学号、姓名、年龄、性别、成绩
展开
2个回答
展开全部
哎,输入就是用循环。。。我写给你看看吧。
int Insertelem(Lnode *q,Stu_rcd e)//q指向插入的前驱节点;输入记录尾插入;
{ Lnode *p;//define
p=(Lnode*)malloc(sizeof(Lnode));
p->elem=e;
p->next=q->next;
q->next=p;
//插入p;
return (OK);
}//返回表头指针
q=&l;l.next=NULL;
printf("按照格式(学号 姓名 成绩)输入记录(结束时输入:## ### 00):\n");
do
{scanf_s("%s %s %d",e.num,10,e.name,20,&e.score);
if(!Insertelem(q,e))printf("error!\n");
q=q->next;
}
while(strcmp(e.num,"##"));
还有就是菜单什么的实现,同学加油吧^_^
int Insertelem(Lnode *q,Stu_rcd e)//q指向插入的前驱节点;输入记录尾插入;
{ Lnode *p;//define
p=(Lnode*)malloc(sizeof(Lnode));
p->elem=e;
p->next=q->next;
q->next=p;
//插入p;
return (OK);
}//返回表头指针
q=&l;l.next=NULL;
printf("按照格式(学号 姓名 成绩)输入记录(结束时输入:## ### 00):\n");
do
{scanf_s("%s %s %d",e.num,10,e.name,20,&e.score);
if(!Insertelem(q,e))printf("error!\n");
q=q->next;
}
while(strcmp(e.num,"##"));
还有就是菜单什么的实现,同学加油吧^_^
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <malloc.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
typedef struct tagNode
{
int data;//这里的data就是指学号,姓名,年龄,性别。成绩等,自己改去
struct tagNode* next;
}Node;
typedef struct tagNode *LinkList;
void CreateList(LinkList *pList,int n)
{
LinkList p;
srand(time(0));
*pList=(LinkList)malloc(sizeof(Node));
(*pList)->next=NULL;
for (int i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(Node));
p->data=rand()%100;
p->next=(*pList)->next;
(*pList)->next=p;
}
}
void ClearList(LinkList *pList)
{
LinkList p,q;
p=(*pList)->next;
while (p)
{
q=p->next;
free(p);
p=q;
}
(*pList)->next=NULL;
}
int ListInsert(LinkList *pList,int e,int i)
{
LinkList p,s;
p=*pList;
int j=1;
while (p && j<i)
{
p=p->next;
j++;
}
if (!p || j>i)
{
return 0;
}
s=(LinkList)malloc(sizeof(Node));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete(LinkList *pList,int i,int *e)
{
LinkList p,q;
p=*pList;
int j=1;
while (p->next && j<i )
{
p=p->next;
j++;
}
if (j>i || !p->next)
{
return 0;
}
q=p->next;
*e=q->data;
p->next=q->next;
free(q);
return 1;
}
bool is_Empty(LinkList *pList)
{
if ((*pList)->next==NULL)
{
return true;
}
return false;
}
void Treaverse(LinkList *pList)
{
LinkList p;
p=(*pList)->next;
while(p)
{
printf("%d \t",p->data);
p=p->next;
}
}
int main(void)
{
return 0;
}
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
typedef struct tagNode
{
int data;//这里的data就是指学号,姓名,年龄,性别。成绩等,自己改去
struct tagNode* next;
}Node;
typedef struct tagNode *LinkList;
void CreateList(LinkList *pList,int n)
{
LinkList p;
srand(time(0));
*pList=(LinkList)malloc(sizeof(Node));
(*pList)->next=NULL;
for (int i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(Node));
p->data=rand()%100;
p->next=(*pList)->next;
(*pList)->next=p;
}
}
void ClearList(LinkList *pList)
{
LinkList p,q;
p=(*pList)->next;
while (p)
{
q=p->next;
free(p);
p=q;
}
(*pList)->next=NULL;
}
int ListInsert(LinkList *pList,int e,int i)
{
LinkList p,s;
p=*pList;
int j=1;
while (p && j<i)
{
p=p->next;
j++;
}
if (!p || j>i)
{
return 0;
}
s=(LinkList)malloc(sizeof(Node));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete(LinkList *pList,int i,int *e)
{
LinkList p,q;
p=*pList;
int j=1;
while (p->next && j<i )
{
p=p->next;
j++;
}
if (j>i || !p->next)
{
return 0;
}
q=p->next;
*e=q->data;
p->next=q->next;
free(q);
return 1;
}
bool is_Empty(LinkList *pList)
{
if ((*pList)->next==NULL)
{
return true;
}
return false;
}
void Treaverse(LinkList *pList)
{
LinkList p;
p=(*pList)->next;
while(p)
{
printf("%d \t",p->data);
p=p->next;
}
}
int main(void)
{
return 0;
}
追问
主要是结构体里面的数值怎么从键盘上输入?可以写的具体点吗?
追答
int ListInsert(LinkList *pList,int e,int i)
这个函数就实现了啊,参数里的int e就是要输入的值,
如果要初始化的话可以 调用
void CreateList(LinkList *pList,int n)
链表应该很简单啊,建议找一本数据结构的书看看再去写代码...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询