顺序表
在黑框输入数据时出现 “0xC0000005: 写入位置 0xCDCDCDC 时发生访问冲突”
异常,先贴在这咯
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable : 4996)
#define ListSize 10
#define ListIncrement 3
typedef int LElemType;
typedef struct {
LElemType *base;
int length;
int listsize;
}Sqlist;
void InitSqlist(Sqlist &L) {
L.base = (LElemType*)malloc(ListSize * sizeof(LElemType));
if (!L.base)
return;
int length = 0;
int listsize = ListSize;
}
int ListEmpty(Sqlist L) {
if (L.length != 0)
return 0;
return 1;
}
int ListLength(Sqlist L) {
return L.length;
}
void GetElem(Sqlist L, int i, int &e) {
if (i<0 || i>L.length)
return;
e = L.base[i - 1];
}
int LocateElem(Sqlist L, int e) {
int i = 0;
while (i < L.length) {
if (e == L.base[i])
return i+1;
i++;
}
return 0;
}
void ListInsert(Sqlist &L, int i, int e) {
if (i<1 || i>L.length+1)
return;
if (L.length >= L.listsize) {
LElemType *newbase = (LElemType*)realloc(L.base, (ListSize + ListIncrement)*sizeof(LElemType));
if (!newbase)
return;
L.base = newbase;
L.listsize = ListSize + ListIncrement;
for (int j = L.length; j>=i; j--)
L.base[j] = L.base[j - 1];
L.base[i] = e;
L.length++;
}
}
void ListDelete(Sqlist &L, int i,int &e) {
if (i<0 || i>L.length)
return;
e = L.base[i- 1];
while (i < L.length) {
L.base[i - 1] = L.base[i];
i++;
}
L.length--;
}
int main() {
Sqlist L;
InitSqlist(L);
printf("请输入整型数据,按ctrl+z +enter 结束输入/n");
int i = 0;
while (scanf("%d", L.base[i]) != EOF) {
L.length++;
i++;
}
if (ListEmpty(L)) {
printf("为空/n");
}
else
printf("非空/n");
int j;
printf("输入带查找的元素位序/n");
scanf("%d",&j);
printf("第%d个元素值为%d", j, GetElem);
printf("输入待插入元素位序和值/n");
int a, b;
scanf("%d%d",&a,&b);
ListInsert(L,a,b);
printf("输入待查找位序的元素值/n");
int c;
scanf("%d", &c);
printf("%d", LocateElem(L,c));
//.........//
return 0;
}
单链表
#include <stdio.h>
#include <stdlib.h>
typedef int LElemType;
typedef struct LNode {
LElemType data;
struct LNode *next;
}LNode,*LinkList; //节点的结构,包括数据和指向下一个节点的指针
void CreatLinkList_Head(LinkList &L, int n) {
//引用作为形参,与指针相比减少空间使用
L= (LinkList