在探索VS2019的海洋中溺水
程序员文章站
2022-06-25 20:50:43
...
今天写了一个单链表!可是又为啥报错啊啊啊啊啊啊!报错我还不会改!!!!跪求救救菜弟弟叭,我菜炸了!
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode* next;
}LinkList;
void CreateListF(LinkList* L,ElemType a[], int n)
{
LinkList* s;
int i;
L = (LinkList*)malloc(sizeof(struct LNode));
L->next = NULL;
for (i = 0; i < n; i++)
{
s = (LinkList*)malloc(sizeof(struct LNode));
s->data = a[i];
s->next = L->next;
L->next = s;
}
}
void CreateListR(LinkList* L, ElemType a[], int n)
{
LinkList* s, * r;
int i;
r = L;
for(i=0;i<n;i++)
{
L = (LinkList*)malloc(sizeof(struct LNode));
s->data = a[i];
r->next = s;
r = s;
}
r->next = NULL;
}
void InitList(LinkList* L)
{
L->next = NULL;
}
void DestroyList(LinkList* L)
{
LinkList* pre = L, * p = L->next;
while (p != NULL)
{
free(pre);
pre = p;
p = pre->next;
}
free(pre);
}
int ListEmpty(LinkList* L)
{
return(L->next == NULL);
}
int ListLength(LinkList* L)
{
int n = 0;
LinkList* p = L;
while (p->next != NULL)
{
n++;
p = p->next;
}
return n;
}
void DispList(LinkList* L)
{
LinkList* p = L->next;
while (p != NULL)
{
printf("%d", p->data);
p = p->next;
}
printf("\n");
}
int GetElem(LinkList* L, int i, ElemType e)
{
int j = 0;
LinkList* p = L;
while (j < i && p != NULL)
{
j++;
p = p->next;
}
if (p == NULL)
return 0;
else
{
e = p->data;
return 1;
}
}
int LocateElem(LinkList* L, ElemType e)
{
int i;
LinkList* p = L->next;
while (p != NULL && p->data != e)
{
p = p->next;
i++;
}
if (p == NULL)
return 0;
else
return i;
}
int ListInsert(LinkList* L, int i, ElemType e)
{
int j = 0;
LinkList* p = L, * s;
while (j < i - 1 && p != NULL)
{
j++;
p = p->next;
}
if (p == NULL)
return 0;
else
{
s = (LinkList*)malloc(sizeof(struct LNode));
s->data = e;
s->next = p->next;
p->next = s;
return 1;
}
}
int ListDelete(LinkList* L, int i, ElemType e)
{
int j = 0;
LinkList* p = L, * q;
while(j<i-1&&p!=NULL)
{
j++;
p = p->next;
}
if (p == NULL)
return 0;
else {
e = q->data;
p->data;
p->next = q->next;
free(q);
return 1;
}
}
int main() {
LinkList* L;
int a[10] , i, e;
L = (LinkList *)malloc(sizeof(struct LNode));
for (i = 0; i < 10; i++)
scanf_s("%d", &a[i]);
InitList(L);
CreateListR(L, a, 10);
DispList(L);
printf("length is %d\n", ListLength(L));
printf("get is %d\n", GetElem(L, 3, 4));
ListInsert(L, 3, 2);
printf("after insert :\n");
DispList(L);
ListDelete(L, 4, e);
printf("after delete:\n");
DispList(L);
printf("\n");
return 0;
}`