#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++;
}
}
求幫忙看看錯誤的地方要怎麼改啊!緊急啊
求助,緊急啊
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.