C語言單鏈表問題 求救
50
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int status;
typedef struct{
char name[20];
int code;
float score;
}elemtype;
typedef struct LNode{
elemtype data;
struct LNode *next;
}LNode,*Linklist;
void Createlist_L(Linklist &L,int n) // 逆位序輸入n個學生信息,建立帶頭結點的單鏈表L
{
int i;
Linklist p;
L=(Linklist)malloc(sizeof(LNode));
L->next=NULL; // 先建立一個帶頭結點的單鏈表
for(i=0;i<n;i++)
{
p=(Linklist)malloc(sizeof(LNode)); // 生成新結點
scanf("%d %s %f",&p->data.code,p->data.name,&p->data.score); //輸入學生信息
p->next=L->next;
L->next=p; //插入到表頭
}
}
status Listinsert_L(Linklist &L,int i,elemtype e)
{
int j=0;
Linklist p,s;
if(i<1)
return ERROR;
while(p&&j<i-1)
{
p=p->next;
++j;
}
s=(Linklist)malloc(sizeof(LNode));
s->data.code=e.code,s->data.name=e.name,s->data.score=e.score;
s->next=p->next;
p->next=s;
return OK;
}
void output(Linklist L) // 遍歷輸出整個線性表
{
Linklist p;
p=L->next;
printf("\n學號\t姓名\t成績\n");
while(p)
{
printf("%d\t%s\t%f\n",p->data.code,p->data.name,p->data.score);
p=p->next;
}
}
int main()
{
int i;
Linklist list_1;
elemtype e;
printf("請輸入學生數目:");
scanf("%d",&i);
printf("輸入格式:學號 姓名 成績:\n");
Createlist_L(list_1,i);
output(list_1);
printf("請輸入要插入的位置:");
scanf("%d",&i);
printf("請輸入學生信息:\n");
scanf("%d %s %f ",&e.code,e.name,&e.score);
Listinsert_L(list_1,i,e);
output(list_1);
}
請問這一句s->data.code=e.code,s->data.name=e.name,s->data.score=e.score; 哪裡錯了? 這個程序中還有哪些錯誤的地方? C語言學的太差了,求大家幫助!
最佳回答:
插入的函數改成這樣以後,編譯沒問題了:
status Listinsert_L(Linklist &L,int i,elemtype e)
{
int j=0;
Linklist p,s;
if(i<1)
return ERROR;
while(p&&j<i-1)
{
p=p->next;
++j;
}
s=(Linklist)malloc(sizeof(LNode));
s->data.code=e.code; // 三個賦值,寫在三個語句裡面 //s->data.name=e.name; strcpy(s->data.name, e.name); s->data.score=e.score; s->next=p->next;
p->next=s;
return OK;
}