#include <iostream>
#include<stdio.h>
#include<malloc.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBALE -1//不可执行的
#define OVERFLOW -2
typedef int Status;
typedef int Elemtype;
//结点定义
typedef struct LNode
{
Elemtype data;
struct LNode* next;
}*LinkList;
//创建表
void CreateList_L(LinkList &L, int n)
{
LinkList p;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
printf("请输入你的学号");
for (int i = n; i > 0; --i)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L->next;
L->next = p;
}
}
//删除
Status ListDelete_L(LinkList& L, int i, Elemtype& e)
{
//删除第i个,由e返回其值
LinkList p, q;
p = L;
int j = 0;
while (p->next && j < i - 1)
{
//寻找第i个结点,并使p指向其前驱
p = p->next; ++j;
if (!(p->next) || j > i - 1)
return ERROR;
q = p->next;
p->next = q->next;
free(q);
return OK;
}
}
void display(LinkList L)
{
LinkList p = L->next;
while (p)
{
printf("%d", p->next);
p = p->next;
}
printf("\n");
}
void main()
{
LinkList L;
CreateList_L(L, 8);
Elemtype e;
ListDelete_L(L, 7, e);
printf("被删除的值:%d\n", e);
display(L);
}
修改如下,供参考:
#include <iostream>
#include<stdio.h>
#include<malloc.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBALE -1//不可执行的
#define OVERFLOW -2
typedef int Status;
typedef int Elemtype;
//结点定义
typedef struct LNode
{
Elemtype data;
struct LNode* next;
}*LinkList;
//创建表
void CreateList_L(LinkList &L, int n)
{
LinkList p,qL;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
qL = L; //修改
printf("请输入%d个结点的值:",n);
for (int i = n; i > 0; --i)
{
p = (LinkList)malloc(sizeof(LNode));
p->next = NULL; //修改
scanf("%d", &p->data);
qL->next = p; //p->next = L->next;
qL = p; //修改
}
}
//删除
Status ListDelete_L(LinkList& L, int i, Elemtype& e)
{
//删除第i个,由e返回其值
LinkList p, q;
p = L;
int j = 0;
while (p->next && j < i - 1)
{
//寻找第i个结点,并使p指向其前驱
p = p->next;
++j;
}
if (!(p->next) || j > i - 1)
return ERROR;
e = p->next->data; //修改
q = p->next;
p->next = q->next;
free(q);
return OK;
//}
}
void display(LinkList L)
{
LinkList p = L->next;
while (p)
{
printf("%d ", p->data);// printf("%d ", p->next); 修改
p = p->next;
}
printf("\n");
}
int main()
{
LinkList L;
CreateList_L(L,8);
Elemtype e=0;
ListDelete_L(L, 8, e);
printf("被删除的值:%d\n", e);
display(L);
return 0;
}
scanf_s试下
暂时没看出什么重大问题。试试int main(){}。还有sizeof(struct LNode)