//头文件
include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int num;//人的序号
int pwd;//人的密码
struct Node *next;
}LinkList;
void InitList(LinkList *L,int n);
void enterpwd(LinkList *L,int n);
void ListDelete(LinkList *L,int n,int m);
void InitList(LinkList *L,int n){
LinkList *p,*r;
int i;
L=(LinkList*)malloc(sizeof(Node));
r=L;
for(i=1;i<n;i++)
{
p=(LinkList*)malloc(sizeof(Node));
r->next=p;
r=p;
}
r->next=L;
}
void enterpwd(LinkList *L,int n){
int i,j;
printf("请输入密码:");
for(i=1;i<=n;i++)
{
scanf("%d",&j);
L->num=i;
L->pwd=j;
L=L->next;
}
}
void ListDelete(LinkList *L,int n,int m){
LinkList *q,*s;
q=L;
int i,j;
for(i=1;i<=n;i++)
{
for(j=2;j<m;j++)
{
q=q->next;
}
s=q->next;
printf("%d",s->num);
m=s->pwd;
q->next=s->next;
free(s);
}
}
//主函数
#include <iostream>
#include"1.h"
using namespace std;
int main()
{
int m,n;
cout<<"参加游戏的人数为:";
cin>>n;
cout<<"任选一正整数报数上限:";
cin>>m;
LinkList l;
InitList(l,n);
enterpwd(l,n);
cout<<"出队的人的序号依次是:";
ListDelete(l,n,m);
return 0;
}
问题:
调试了一下,感觉问题挺多的,就改了一下。看看是不是你的需求。
没有注释,自己慢慢看吧!
#include<stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
typedef struct Node {
int num;//人的序号
int pwd;//人的密码
struct Node *next;
}LinkList;
void InitList(LinkList **L, int n);
void enterpwd(LinkList **L, int n);
void ListDelete(LinkList **L, int n, int m);
void InitList(LinkList **L, int n) {
LinkList *p, *r;
int i;
*L = (LinkList*)malloc(sizeof(Node));
r = *L;
for (i = 1; i <= n; i++) {
p = (LinkList*)malloc(sizeof(Node));
p->next = NULL;
r->next = p;
r = p;
}
//r->next = L;
}
void enterpwd(LinkList **L, int n) {
int i, j;
LinkList *p = (*L)->next;
printf("请输入密码:");
for (i = 1; i <= n; i++) {
scanf_s("%d", &j);
p->num = i;
p->pwd = j;
p = p->next;
}
}
void ListDelete(LinkList **L, int n, int m) {
LinkList *q, *s;
q = (*L);
s = (*L);
int i;
/*for (i = 1; i <= n; i++) {
for (j = 2; j < m; j++) {
q = q->next;
}
s = q->next;
printf("%d", s->num);
m = s->pwd;
q->next = s->next;
free(s);
}*/
// 正序输出
q = q->next;
for (i = 0; i < n; i++) {
printf("%d", q->num);
s = q;
q = q->next;
free(s);
}
// 逆序输出
//for (int i = 0; i < n; i++) {
// while (q->next != NULL) q = q->next;
// while (s->next != q) s = s->next;
// s->next = NULL;
// printf("%d", q->num);
// free(q);
// q = NULL;
// q = (*L);
// s = (*L);
//}
free(*L);
*L = NULL;
}
//主函数
int main() {
int m, n;
cout << "参加游戏的人数为:";
cin >> n;
cout << "任选一正整数报数上限:";
cin >> m;
LinkList *l;
InitList(&l, n);
enterpwd(&l, n);
cout << "出队的人的序号依次是:";
ListDelete(&l, n, m);
return 0;
}