```c
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<math.h>
#include<process.h>
#define LEN sizeof(LNode)
#pragma warning(disable : 4996)
typedef struct LNode
{
int score;//成绩
char name[20];//名字
int school;//学校编号
struct LNode* next;
}LNode,*LinkList;
//1.建立一个有序表,按次序输入学生的名字成绩和学校编号,输入学生名字为零时结束输入
LinkList creatIncreLink() {
LinkList p;
int num = 1, score;
int school=-1;
char name[20] = {0}, temp;
LinkList L,P;
L = (LinkList)malloc(LEN);//创建头节点
if(L)
L->next = NULL;//头节点的下一个结点指向空
printf("输入该学生的名字:%d:", num);
temp = getchar();
gets(name);
printf("输入该学生的成绩:%d:",num);
scanf_s("%d", &score);
printf("输入该学生的学校编号:%d:",num);
scanf_s("%d", &school);
while (school!=0) {
p = (LinkList)malloc(LEN);
if (p)
{
p->school = school;
p->score = score;
strcpy(p->name, name);
insertYouXu(L, p);
num++;
printf("输入该学生的名字:%d:",num);
temp = getchar();
gets(name);
printf("输入该学生的成绩:%d:",num);
scanf_s("%d", &score);
printf("输入该学生的学校编号:%d:",num);
scanf_s("%d", &school);
}
}
return (L);
}
LinkList prior(LinkList L, LinkList p) {//找前驱
LinkList p_prior = L;
if (L->next == NULL) return (L);
while (p_prior->next != p)
p_prior = p_prior->next;
return (p_prior);
}
int insertYouXu(LinkList L, LinkList Elem) {
LinkList p = L->next;
if (p == NULL) {
p = prior(L, p);
Elem->next = NULL;
p->next = Elem;
}
else {
p = prior(L, p);
Elem->next = p->next;
p->next = Elem;
}
}
//根据该学校的学校编号,统计各个学校的成绩
/*int schoolsearch(LinkList L, char n[]) {
}*/
//为了验证输入的正确,这里再多加一个函数输出记录的数据
void printList(LinkList L) {
LinkList p = L;
int n = 1;
printf("\n -----------------\n");
printf(" 姓名 成绩 学校编号\n");
printf(" -----------------\n");
if (L == NULL || L->next == NULL)
printf("wrong\n");
else
while (p->next != NULL)
{
printf(" %s %d %d\n", p->name, p->score, p->school);
p = p->next;
n++;
}
return;
}
void main(){/*
//先指向一个空的链表
int menu;
//或许会要用到一个指针,暂时不知道有什么用,先留着
system("color if");//据说是设置界面颜色,暂时不知道有什么用
printf("********************^@^欢迎使用运动会分数统计系统********************\n");
printf(" * 1 输入个项目前三名或者前五名的成绩 *\n");
printf(" * 2 统计各学校总分 *\n");
printf(" * 3 按学校编号、学校总分、男女团体总分排序输出 *\n");
printf(" * 4 按学校编号查询学校某个项目的情况 *\n");
printf(" * 5 按项目编号查询取得前三或前五名的学校 *\n");
*/LinkList L = NULL;
printf("建立男子一百米的链表链表(从小到大):\n");
L = creatIncreLink();
printList(L);
printf("建立男子两百米的 链表:\n");
L = creatIncreLink();
printList(L);
}
```
代码没贴全,看不出来问题在哪。
windows里常见的内存填充数据含义:
windows里常见的内存填充数据含义
* 0xABABABAB : 被微软的HeapAlloc()用来在分配的堆内存后标记“无人地带”保护字节 Used by Microsoft's HeapAlloc() to mark "no man's land" guard bytes after allocated heap memory
漱 * 0xABADCAFE : 启动此值以初始化所有可用内存以捕获错误指针 A startup to this value to initialize all free memory to catch errant pointers
涵? * 0xBAADF00D :被微软的LocalAlloc(LMEM_FIXED)用来标记未初始化的已分配堆内存 Used by Microsoft's LocalAlloc(LMEM_FIXED) to mark uninitialised allocated heap memory
很? * 0xBADCAB1E :断开与调试器的连接时,返回给Microsoft eVC调试器的错误代码 Error Code returned to the Microsoft eVC debugger when connection is severed to the debugger
撅饰 * 0xBEEFCACE : 由微软使用。NET作为资源文件中的一个神奇数字 Used by Microsoft .NET as a magic number in resource files
烫烫 * 0xCCCCCCCC : 被微软的C++调试运行库用来标记未初始化的堆栈内存 Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory
屯屯 * 0xCDCDCDCD : 被微软的C++调试运行库用来标记未初始化的堆内存 Used by Microsoft's C++ debugging runtime library to mark uninitialised heap memory
葺葺 * 0xDDDDDDDD : 由Microsoft的free()或delete用来标记已释放的堆内存 Used by Microsoft's free() or delete to mark freed heap memory
蕲蕲 * 0xDEADDEAD : 用户手动启动崩溃时使用的Microsoft Windows停止错误代码 A Microsoft Windows STOP Error code used when the user manually initiates the crash
* 0xFDFDFDFD : 被微软的C++调试堆用来在分配的堆内存前后标记“无人地带”保护字节 Used by Microsoft's C++ debugging heap to mark "no man's land" guard bytes before and after allocated heap memory
* 0xFEEEFEEE : 被微软的HeapFree()用来标记释放的堆内存 Used by Microsoft's HeapFree() to mark freed heap memory
用代码块发完整代码,不要截图