求助,緊急啊

#include <stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;
typedef struct Lnode
{
     ElemType data;
     struct Lnode *next;
} Lnode, *Link ; 
typedef struct 
{
     Link last ; 
     int len ; 
}*LinkList ;
Status InitList( LinkList& L) 
{
	Link head;
	head=(Link)malloc(sizeof(Lnode)) ;
    if(head==NULL) return ERROR ;
	head->next=head ;
有錯//	L->last=head; 
有錯//	L->len=0; 
    return OK ;
}
Status GetElem_L( LinkList L, int i, ElemType& e ) 
{
	Link p; 
    int  j; 
	if( i<1 || i>L->len ) return ERROR ;
    // L->last->next 指向頭結點
	p = L->last->next->next ;
	for(j=1;j<i;j++) p = p->next ;
    e = p->data; 
}
Status ListInsert(LinkList L, int i, ElemType e )
{
	Link p,s;
	int j; 
	if(i<1||i>L->len+1) return ERROR;
	p=L->last->next->next; 
	for(j=1;j<i-1;j++) p=p->next;
	s=(Link)malloc(sizeof(Lnode));
	s->data=e;s->next=p->next;p->next=s;
	//如果是在表尾插入,需要修改尾指針
	if(i==L->len+1)
		L->last->data=s->data;
	L->len++;
}
Status ListDelete(LinkList L, int i, ElemType& e )
{
	Link p,q;
	int j;
	// 排除空表的情況
	if(i<1||i>L->len) 
		return ERROR ;
	q = L->last->next->next; 
	for(j=1;j<i-1;j++) 
		q = q->next ;
	p = q->next ;
	q->next = p->next ;
	if( i == L->len )
		L->last = q ;
	e = p->data;
	free(p);
	L->len--;
}
void main()
{
	int M,N,j,i,e;
    LinkList L;
	printf("請輸入M和N的值:");
 	scanf("%d%d",&M,&N);
    InitList(L);
	for(i=1;i<=N;i++)
		ListInsert(L,i,i);
	i = 1 ;  j = 0 ; 
    while(L->len)
	{  
         GetElem_L(L,i,e); 
         j++;
         if (j==M)  
		 { 
			 ListDelete(L,i,e);
			 printf("%d ",e);
			 j=0;
		 }
         else
			 i++;
	}
}



求幫忙看看錯誤的地方要怎麼改啊!緊急啊
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章