单链表的插入【完全可以运行(VC++ 6.0)】
#include<stdio.h>#include<malloc.h>
typedef struct LNode
{
int no; //学号 取值范围1-99
int score; //成绩 取值范围0-100
struct LNode *next;
}LNode, *LinkList;
int InitList(LinkList &L);
int InsertList(LinkList &L, int no, int score);
int ShowList(LinkList L);
void main()
{
LinkList L;
int i, no, score;
InitList(L);
for (i=0; i<10; i++)
{
scanf("%d,%d",&no,&score);
InsertList(L, no, score);
}
ShowList(L);
}
int InitList(LinkList &L)
{ /* 操作结果:构造一个空的线性表L */
L=(LinkList)malloc(sizeof(struct LNode)); /* 产生头结点,并使L指向此头结点 */
if(!L) /* 存储分配失败 */
return -2;
L->next=NULL; /* 指针域为空 */
return 1;
}
int InsertList(LinkList &L,int no, int score)
{//插入链表,每个位置包含2个元素//
LNode *s;
LNode *p=L;
s=(LinkList)malloc(sizeof(struct LNode));
s->no=no;
s->score=score;
s->next=p->next;
p->next=s;
return 1;
}
int ShowList(LinkList L)
{//输出新生成的链表//
LNode *p=L->next;
do
{
printf("%d,%d",p->no,p->score);
printf("\t");
p=p->next;
}
while(p!=NULL);
printf("\n");
return 1;
}