#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++;
}
}
求帮忙看看错误的地方要怎么改啊!紧急啊
求助,紧急啊
最新推荐文章于 2021-08-02 17:53:04 发布