指针-总是出现这类问题无法解决,求助

问题描述

总是出现这类问题无法解决,求助

#include
#include
#include
#include
#include
int Student=0;//总人数
int N;
int Mark[100];
int Mark1[100];
struct student *Head;
struct student
{
char Name[20];
char Snum[20];
char Sex[4];
};
typedef struct node
{
char name[20];
char snum[20];
char sex[4];
struct node *pnext;
}node,*pnode;//类型声明
struct student *GetData();//文件导入
pnode create_list();//创建链表
void traverse_list(pnode phead);//遍历链表输入
int length_list(pnode phead);//链表长度
void sort_list(pnode phead);//学号正排序
void inverse_list(pnode phead);//学号反排序
void delete_list(pnode phead);//链表删除
int insert_list(pnode phead);//链表插入
void main()
{
srand(time(NULL));//随机函数初始化
pnode head=NULL;//建空链表
head=create_list();//链表头指针地址返回head
printf("n");
traverse_list(head);//原链表正排序
sort_list(head);
printf("1.按照学号大小正排序后:n");
traverse_list(head);
int pos;
pos=rand()%N+1;////随即删除
delete_list(head,pos);
printf("2.系统随机删除的同学第%d个同学nn删除后按学号反序输出",pos);
inverse_list(head);//反排序
traverse_list(head);
printf("3.系统已从剩余学生中抽取了一位nn");
printf("插入该生序号为%dnn",insert_list(head));
traverse_list(head);//遍历重新反排序链表输出
}
pnode create_list()//创建链表并随机产生N函数
{
int m=0,i,j,r;
Head=GetData();
printf("n");
for(i=0;i<Student;i++)
Mark[i]=i;
for(i=0;i<Student;i++)
{
r=rand()%(Student-i);
Mark1[m++]=Mark[r];
for(j=r;j<Student;j++)
Mark[j]=Mark[j+1];

    }
m=0;
pnode head=(pnode)malloc(sizeof(node));
pnode tail=head;
tail->pnext=NULL;
printf("请输入你想抽取学生人数N:");
scanf("%d",&N);
    for(i=0;i<N;i++)
        {
            pnode pnew=(pnode)malloc(sizeof(node));//申请空间存储节点
            strcpy(pnew->name,Head[Mark1[m]].Name);
            strcpy(pnew->snum,Head[Mark1[m++]].Snum);
            strcpy(pnew->sex,Head[Mark1[m++]].Sex);
            tail->pnext=pnew;//末尾指向新元素
            pnew->pnext=NULL;
            tail=pnew;//新元素地址变成新末尾
        }
    return head;

}
void traverse_list(pnode phead)
{
pnode p=phead->pnext;//将头结点指针给指针p
printf("学生信息为:nn");
while(p!=NULL)
{
printf("t%st%st%st",p->name,p->snum,p->sex);
p=p->pnext;
}
printf("n");
}
int length_list(pnode phead)//链表长度
{
int len=0;
pnode p=phead->pnext;
while(p!=NULL)
{
len++;
p=p->pnext;
}
return len;
}
void sort_list(pnode phead)//冒泡法排序,按正排序复制
{
int i,j,len;
char name[20],num[20],sex[4];///
pnode q;
len=length_list(phead);
for(i=0;i
{
for(j=0,q=phead->pnext;jpnext,j++)

        if(strcmp(q->snum,q->pnext->snum)>0)
            {
                strcpy(name,q->name);
                strcpy(q->name,q->pnext->name);
                strcpy(q->pnext->name,name);

                strcpy(num,q->snum);
                strcpy(q->snum,q->pnext->snum);
                strcpy(q->pnext->snum,num);

                strcpy(sex,q->sex);
                strcpy(q->sex,q->pnext->sex);
                strcpy(q->pnext->sex,sex);
            }
}

}
void inverse_list(pnode phead)
{
int i,j,len;
char name[20],num[20],sex[4];
pnode q;
len=length_list(phead);
for(i=len-1;i>0;i--)
{
for(j=len-1,q=phead->pnext;j>0;q=q->pnext,j--)
if(strcmp(q->snum,q->pnext->snum)
{
strcpy(name,q->name);
strcpy(q->name,q->pnext->name);
strcpy(q->pnext->name,name);

                strcpy(num,q->snum);
                strcpy(q->snum,q->pnext->snum);
                strcpy(q->pnext->snum,num);

                strcpy(sex,q->sex);
                strcpy(q->sex,q->pnext->sex);
                strcpy(q->pnext->sex,sex);
            }
    }

}
void delete_list(pnode phead,int pos)//删除元素
{

pnode p=phead;
int i=0;
while(p->pnext!=NULL&&i
{
p=p->pnext;
i++;
}//寻找指定位置
pnode q=p->pnext;
p->pnext=p->pnext->pnext;
free(q);//释放空间
q=NULL;
}
int insert_list(pnode phead)
{
int m=rand()%(Student-N)+N;//产生N到student随机数
pnode p=phead;
pnode q=(pnode)malloc(sizeof(node));
strcpy(q->name,Head[Mark1[m]].Name);
strcpy(q->snum,Head[Mark1[m]].Snum);
strcpy(q->sex,Head[Mark1[m]].Sex);
q->pnext=p->pnext;
p->pnext=q;///
inverse_list(phead);
pnode pt=phead;
int location=0;
pnode s=(pnode)malloc(sizeof(node));
strcpy(s->snum,Head[Mark1[m]].Snum);
while(pt!=NULL)
{
pt=pt->pnext;
location++;
if(strcmp(s->snum,pt->snum)==0)
break;
}
return location;
}
struct student *GetData()//导入文件函数
{
int i;
struct student students[100];
FILE *fp;
fp=fopen("a.txt","r");
printf("导入学生数据:nn");
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%s%s%s",students[i].Name,students[i].Snum,students[i].Sex);
printf("t%st%st%stn",students[i].Name,students[i].Snum,students[i].Sex);
}////
Student=i;
return students;
}
'delete_list' : function does not take 2 parameters

解决方案

void delete_list(pnode phead);//链表删除
这个函数定义修改为
void delete_list(pnode phead,int pos)

时间: 2024-10-03 16:18:22

指针-总是出现这类问题无法解决,求助的相关文章

c++-C++急求复数类已自行解决

问题描述 C++急求复数类已自行解决 求前辈写上思路和注释,我还要看的. 一.编写复数类CMyComplex.实现各种常用构造函数,实现整数.实数向复数的转化函数,实现整数.实数和复数以及复数之间的加.减.乘.除各种运算,并编写输出的成员函数.在主函数中测试. 设计一个MyComplex(复数)类 1.基本信息:实部.虚部: 其中:基本信息为private属性,成员函数为public属性: 2.MyComplex类有多个构造函数:缺省构造函数.带参数的构造函数.带默认参数的构造函数 3.基本功能

定义类的指针变量如何重载类的拷贝构造函数和重载=号

问题描述 定义类的指针变量如何重载类的拷贝构造函数和重载=号 #ifndef LIST_OPRATOR #define LIST_OPRATOR #include using namespace std; class Complex { private: int a; char* p; public: void operator=(Complex* c2); Complex(const Complex* c2); Complex(int a,char* m); ~Complex() { cout

编程-安卓,actionbar的onTanSelected方法不支持v4包的类,怎么解决?

问题描述 安卓,actionbar的onTanSelected方法不支持v4包的类,怎么解决? 安卓ActionBar.TabListener的onTabSelected方法不支持v4包的FragmentTransaction,怎么解决 在ActionBar里添加Tab时,class TabListener implements ActionBar.OnTabListener{ } 里面要复写一个onTabSelected(Tab tab,FragmentTransaction ft){}方法,

编程-C++数组作为类的私有成员求助

问题描述 C++数组作为类的私有成员求助 定义一个Employee类,其中包括姓名.街道地址.城市和邮编等属性,以及changeName()和display()等函数.display()显示姓名.街道地址.城市和邮编等属性,changeName()改变对象的姓名属性. 在employee.h文件中定义Employee类.Employee类具有姓名.街道地址.城市和邮编等私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数st

怎么办-microsoft sql 2008 r2 出现错误1406怎么解决 求助~~~

问题描述 microsoft sql 2008 r2 出现错误1406怎么解决 求助~~~ 出现一下错误: 错误1406.无法将值 写入注册表SoftwareClassesCLSID{1F69F884-285E-418E-9715-B9EEE402DD5F}LocalServer32.请确认您有足够的权限访问该注册表项,或者与支持人员联系. 解决方案 http://wenku.it168.com/d_000653718.shtml 参考

C++第6周项目6 - 有指针成员的工资类

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8748730 [项目6]设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和这些职工的工资salary,要求输入职工工资并逐个输出.提示1:第4周项目5 数组作数据成员曾经处理过类似问题,但固定大小的数组,可能造成空间的浪费,也

谷歌浏览器打不开提示没有注册类该怎么解决?

  由于谷歌浏览器默认安装到C盘下,所以,有些朋友会把下载的谷歌浏览器安装程序解包使用,但是会出现未注册类的提示,本文介绍该问题的解决方法. 1.由于谷歌浏览器默认安装到C盘下,所以,有些朋友会把下载的谷歌浏览器安装程序解包使用,但是会出现未注册类的提示. 2.具体的解决方法是:在开始菜单处,输入"regedit",打开注册表. 3.然后打开第一项,如下图所示. 4.在下面找到如下图所示的两个分支项. 5.右键,依次点击删除.两个都要删除的. 6.然后,关闭注册表,再打开谷歌浏览器,你

音频、视频类故障如何解决?

  电脑音频.视频类故障是很多用户在使用电脑中都会遇到的,当出现了这类故障的现象后,解决办法有很多.主要有以下几种: 1.首先要检查音箱是否使用正常,可以将音箱连接在其他音源上,例如MP3,检测声音输出是否正常. 2.检查是不是由于未安装相应的插件或补丁,导致多媒体工作不正常. 3.如果在不同的播放器下播放不同的多媒体文件都出现了故障,就要对相关的系统设置进行检查. 4.如果在一个播放器中有故障,在其他播放器不正常,要对播放软件的设置进行检查,能不能支持被播放文件的格式.可以尝试重新安装或升级文

执行 Maven 编译的 jar,找不到相关的 依赖的类--使用 maven-assembly-plugin 解决

问题:执行 jar 找不到依赖的类 用 Maven 编译完成后 ,生产了 ui-compressor-1.0.0.jar, 此时执行 java -cp target/ui-compressor-1.0.0.jar com.waylau.uicompressor.App 提示下面找不到依赖的包: Exception in thread "main" java.lang.NoClassDefFoundError: org/mozilla/javascrip t/ErrorReporter