程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言單鏈表問題 求救

C語言單鏈表問題 求救

編輯:C語言問答

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;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved