主题:数据结构,请教!!
看下列个算法实现。我的输入模块和输出模块是不是有错!
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef struct LNode{ /*定义一各结点结构体类型*/
int data;
struct LNode *next;
} LNode,*Link;
typedef struct { /*定义一各链表结构体类型*/
Link head,tail;
int len;
}List,*LinkList;
Link MakeNode(int e){ /*创建一个结点*/
Link p; /*如果为position 则为p*/
p=(Link )malloc(sizeof (LNode));
p->data=e;
p->next=0;
return p; /*返回类型应该何前面的一致,如果是指针,就要返回指针*/
}
void InitList(LinkList L){ /*构造一各空的链表*/
Link p; /*结点为空*/
p=MakeNode(0); /*创建一各空结点*/
if(!p)exit (ERROR);
L=(LinkList)malloc(sizeof (List)); /*为链表分配存储空间*/
L->head=p; /*链表头结点指向p空结点*/
L->tail=NULL; /*链表尾结点为空*/
L->len=0;
}
Inserent(LinkList L){
int i,n;
Link p,q;
printf("请输入长度:");
scanf("%d",&n);
L->len=n;
printf("请输入数字:");
for(i=0;i<L->len;i++){
p=(Link)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=0;
L->head->next=p;
L->head=p;
}
}
output(LinkList L){
int i;
Link p;
p=L->head->next;
for(i=0;i<L->len;i++)
{ printf("%d",p->data);
p=p->next;
}
}
main(){
List la;
InitList(&la); /*构造空链表*/
Inserent(&la);
output(&la);
}
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef struct LNode{ /*定义一各结点结构体类型*/
int data;
struct LNode *next;
} LNode,*Link;
typedef struct { /*定义一各链表结构体类型*/
Link head,tail;
int len;
}List,*LinkList;
Link MakeNode(int e){ /*创建一个结点*/
Link p; /*如果为position 则为p*/
p=(Link )malloc(sizeof (LNode));
p->data=e;
p->next=0;
return p; /*返回类型应该何前面的一致,如果是指针,就要返回指针*/
}
void InitList(LinkList L){ /*构造一各空的链表*/
Link p; /*结点为空*/
p=MakeNode(0); /*创建一各空结点*/
if(!p)exit (ERROR);
L=(LinkList)malloc(sizeof (List)); /*为链表分配存储空间*/
L->head=p; /*链表头结点指向p空结点*/
L->tail=NULL; /*链表尾结点为空*/
L->len=0;
}
Inserent(LinkList L){
int i,n;
Link p,q;
printf("请输入长度:");
scanf("%d",&n);
L->len=n;
printf("请输入数字:");
for(i=0;i<L->len;i++){
p=(Link)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=0;
L->head->next=p;
L->head=p;
}
}
output(LinkList L){
int i;
Link p;
p=L->head->next;
for(i=0;i<L->len;i++)
{ printf("%d",p->data);
p=p->next;
}
}
main(){
List la;
InitList(&la); /*构造空链表*/
Inserent(&la);
output(&la);
}