typedef int ElemType;
typedef struct Node{
ElemType data;
struct Node* next;
}Node,*LinkList;
int main(int argc, const char * argv[]) {
LinkList l = NULL;
if( !Initlist_L( l ) ){
PrintList_L( l ); //遍历链表元素
}else {
printf( "分配内存失败." );
}
}
int Initlist_L( LinkList l ){ //创建链表并初始化
int a,b;
int c = 0;
Node* p,*q = NULL;
l = (LinkList)malloc(sizeof(Node));
l->next = NULL; //创建头结点
if( !l ){
return -1;
}
printf( "是否输入数据?Yes:1;No: 0" );
scanf( "%d",&a );
while( a ){
if( !(c++) ){
p = (Node*)malloc(sizeof(Node));
printf( "请输入数据:");
scanf( "%d",&b );
p->data = b;
p->next = l->next;
l->next = p;
q = p;
}else {
p = (Node*)malloc(sizeof(Node));
printf( "请输入数据:");
scanf( "%d",&b );
p->data = b;
q->next = p;
p->next = NULL;
q = p;
}
printf( "是否继续输入数据?Yes: 1; No: 0");
scanf( "%d",&a );
}
printf( "\n" );
return 0;
};
函数:int Initlist_L(LinkList &l) 形参加上地址引用即可 。
第58行:}; 多了 ‘ ; '号
这里应该是c++,不用!吧?
那就这么改下:
int Initlist_L(LinkList *l) { //创建链表并初始化
int a, b;
int c = 0;
Node* p, * q = NULL;
(*l) = (LinkList)malloc(sizeof(Node));
(*l)->next = NULL; //创建头结点
if (!(*l)) {
return -1;
}
printf("是否输入数据(Yes:1;No: 0)? ");
scanf("%d", &a);
while (a) {
if (!(c++)) {
p = (Node*)malloc(sizeof(Node));
printf("请输入数据:");
scanf("%d", &b);
p->data = b;
p->next = (*l)->next;
(*l)->next = p;
q = p;
}
else {
p = (Node*)malloc(sizeof(Node));
printf("请输入数据:");
scanf("%d", &b);
p->data = b;
q->next = p;
p->next = NULL;
q = p;
}
printf("是否输入数据(Yes:1;No: 0)? ");
scanf("%d", &a);
}
printf("\n");
return 0;
}//;
主函数:
int main(int argc, const char* argv[]) {
LinkList l = NULL;
if (!Initlist_L(&l)) {
PrintList_L(l); //遍历链表元素
}
else {
printf("分配内存失败.");
}
return 0;
}