#include "stdlib.h"
#include "string.h"
#include "malloc.h"
typedef char ElemType;
#define OK 1
#define ERROR 0
#define OVER -1
typedef struct node
{
int number;
char name[20];
int chinese,math,english;
struct node *next;
} LinkList;
LinkList *InitList()
{
LinkList *H;
H=(LinkList *)malloc(sizeof(LinkList));
H->next=NULL;
return(H);
}
int Length_list(LinkList *H)
{
LinkList *p;
int j=0;
p=H;
while(p->next!=NULL)
{ p=p->next;
j++;
}
return j;
}
void CreateList(LinkList *H,int n)
{
int i;
LinkList *s,*last;
char ch;
last=H;
for(i=1;i<=n;i++)
{ s=(LinkList *)malloc(sizeof(LinkList));
printf("\n請輸入第%d個學生的學號:",i);
scanf("%d",&s->number);
printf("\n請輸入第%d個學生的姓名:",i);
scanf("%s",&s->name);
printf("\n請輸入第%d個學生的語文、數學和英語成績:",i);
scanf("%d%d%d",&s->chinese,&s->math,&s->english);
s->next=NULL;
last->next=s;
last=s;
}
}
LinkList *Locate(LinkList *H,int num)
{
LinkList *p;
p=H->next;
while(p!=NULL&&p->number!=num)
p=p->next;
return p;
}
LinkList *GetList(LinkList *H,int i)
{
LinkList *p;
int j=0;
p=H;
while(p->next!=NULL &&j<i)
{
p=p->next;
j++;
}
if(j==i)
return p;
else
return NULL;
}
int InsList(LinkList *p,LinkList x)
{
LinkList *s;
s=(LinkList *)malloc(sizeof(LinkList));
s->number=x.number;
strcpy(s->name,x.name);
s->chinese=x.chinese;
s->math=x.math;
s->english=x.english;
s->next=p->next;
p->next=s;
return OK;
}
int Ins_List(LinkList *H,int i,LinkList x)
{
LinkList *p;
p=GetList(H,i-1);
if(p!=NULL)
{
InsList(p,x);
return OK;
}
else
return ERROR;
}
int DelList(LinkList *p,LinkList *x)
{
LinkList *s;
s=p->next;
x->number=s->number;
strcpy(x->name,s->name);
x->chinese=s->chinese;
x->math=s->math;
x->english=s->english;
p->next=s->next;
free(s);
return OK;
}
int Del_List(LinkList *H,int i,LinkList *x)
{
LinkList *p;
p=GetList(H,i-1);
if(p!=NULL&&p->next!=NULL)
{
DelList(p,x);
return OK;
}
else
return ERROR;
}
out()
{
printf("\n*****************************************");
printf("\n請輸入序號(0-4)選擇要進行的操作:");
printf("\n0-------退出");
printf("\n1-------建立壹個學生信息表");
printf("\n2-------插入壹個學生信息");
printf("\n3-------刪除壹個學生信息");
printf("\n4-------查找壹個學生是否在該學生信息表中");
printf("\n*****************************************\n");
}
void DisLinkList(LinkList *H)
{
LinkList *p;
printf("\n所有學生的信息如下:");
printf("\n 學號 姓名 語文 數學 英語\n");
p=H->next;
while(p!=NULL)
{
printf("%2d%10s%9d%9d%9d\n",p->number,p->name,p->chinese,p->math,p->english);
p=p->next;
}
}
void main()
{
LinkList *H,*p,*q,x;
int i,n,menux,flag,num;
//clrscr();
out();
H=InitList();
scanf("%d",&menux);
do{switch(menux)
{
case 0: exit(0); break;
case 1:
printf("\n請輸入要生成學生信息表的元素各數:");
scanf("%d",&n);
CreateList(H,n);
printf("建立的學生信息表為:\n");
DisLinkList(H);
break;
case 2:
printf("\n請輸入要插入的學生位置:");
scanf("%d",&i);
printf("\n請輸入要插入的學生信息:");
printf("\n請輸入學生的學號:");
scanf("%d",&x.number);
printf("\n請輸入學生的姓名:");
scanf("%s",&x.name);
printf("\n請輸入學生的語文 數學和英語成績:");
scanf("%d%d%d",&x.chinese,&x.math,&x.english);
flag=Ins_List(H,i,x);
if(flag)
{
printf("\n插入後的學生信息表為:");
DisLinkList(H);
}
break;
case 3:
printf("請輸入要刪除的學生的位置:");
scanf("%d",&i);
flag=Del_List(H,i,&x);
if(flag)
{
printf("\n刪除第%d個學生後,表中信息為:",i);
DisLinkList(H);
}
break;
case 4:
printf("\n請輸入查找的學生學號:\n");
scanf("%d",&num);
if((q=Locate(H,num))!=NULL)
{
printf("\n在學生信息表中存在著學號為%d的學生!",num);
printf("\n學號 姓名 語文 數學 英語\n");
printf("%2d%10s%9d%9d%9d",q->number,q->name,q->chinese,q->math,q->english);
}
else
printf("\n在學生信息表中不存在著學號為%d的學生!",num);
break;
default:
printf("\n輸入選項錯誤,請重新輸入(0-4)!");
}
out();
scanf("%d",&menux);
}while(1);
}
C++的 妳將就用嗎
在棧溢出的開發者調查中,有壹種“最流行的編程語言”——Rust。鐵銹為什麽能這麽好?
就我個人而言,當我第壹次聽說Rust時,我是壹名開發人員和數據科學家,用Python和Go等語言編寫代碼。我喜歡這兩種語言,幾乎每天都用Python,偶爾用Go。出於好奇,我開始學銹。因為我的Python編程背景,學Rust並不容易,因為Rust和其他流行語言有很大的不同。