BEI-TIAN-XUAN 2021-05-30 00:45 采纳率: 66.7%
浏览 146
已采纳

VS2019 ——单链表操作.exe 已触发了一个断点问题

断点如下:

全部代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#include<stdbool.h>
typedef char ElemType;
typedef struct node
{
	ElemType data;
	struct node* next;
}Node, LinkList;
void Show_meau()   //菜单
{
	printf("**********************************\n");
	printf("            WELCOME!\n");
	printf("\n");
	printf("\t单链表的基本操作\n\n");
	printf("  \t 1.查询\t 2.插入\n\n");
	printf("  \t 3.删除\t 4.打印\n\n");
	printf("  \t 5.计数\t 6.销毁\n\n");
	printf("  \t 7.退出\t 8.建表\n\n");
	printf("\n");
	printf("     输入相关序号实现相关功能!\n");
	printf("**********************************\n");
}
void InitList(LinkList* L)
{
	L = (LinkList*)malloc(sizeof(Node));
	L->next = NULL;
}
void Create_List(LinkList* L)   //尾插法
{
	ElemType c;
	Node* r, * s;
	bool flag=true;
	r = L;
	printf("提示:输入$表示建表结束!\n");
	while (flag==true)
	{
		c = getchar();
		if (c != '$')
		{
			s = (LinkList*)malloc(sizeof(Node));
			s->data = c;
			r->next = s;
			r = s;
		}
		else
		{
			flag = false;
			r->next = NULL;
		}
	}
	printf("建表完成!\a");
	Sleep(2000);
}
void Search(LinkList* L)
{
	int flag=1;
	Node* p;
	ElemType e;
	getchar();   //吸收换行符
	p = L->next;
	printf("请输入要查找的值:");
	e = getchar();
	while (p != NULL)
	{
		if (p->data != e)
			p = p->next;
		else
		{
			printf("该地址为:%p\n", p);
			printf("输入0退出!\n");
			scanf("%d", &flag);
			break;
		}
	}
	if (flag == 0)
		return;
	printf("查无此值!\a");
	Sleep(2000);
}
void DispList(LinkList* L)
{
	int n;
	LinkList* p = L->next;
	printf("打印值为:\n");
	while (p != NULL)
	{
		printf("%c", p->data);
		p = p->next;
	}
	printf("\n\n");
	while (1) {
		printf("输入0退出打印!\n");
		scanf("%d", &n);
		if (n == 0)
			return;
		else
			printf("输入无效,请重新输入!\n");
	}
}
int ListLength(LinkList *L)
{
	int n = 0;
	LinkList* p = L;
	while (p->next != NULL)
	{
		n++;
		p=p->next;
	}
	n--;
	return n;
}
void Print_Length(LinkList* L)
{
	int n = 1;
		while (1)
		{
			if (n == 1)
			{
				printf("表长为:%d\n", ListLength(L));
				printf("输入0退出打印!\n");
				scanf("%d", &n);
			}
			if (n == 0)
				return;
		}
}
void ListInsert(LinkList* L)
{
	int i,j=0;
	ElemType e;
	LinkList* p = L, * s;
	printf("当前表长为:%d\n", ListLength(L));  //注意指针L
	while (1)
	{
		printf("请输入插入的位置:");
		scanf("%d", &i);
		if (i <= 0 || i > ListLength(L))
		{
			printf("输入错误!请重新输入!\n");
		}
		else
			break;
	}
	getchar();
	printf("请输入插入的值:");
	scanf("%c", &e);
	while (j < i  && p != NULL)
	{
		j++;
		p = p->next;
	}
	if (p == NULL)
	{
		printf("查无此值!\n");
		Sleep(2000);
		return;
	}
	else
	{
		s = (LinkList*)malloc(sizeof(Node));
		s->data = e;
		s->next = p->next;
		p->next = s;
		printf("插入成功!\a");
		Sleep(2000);
	}
}
void ListDelete(LinkList* L)
{
	int i, j = 0;
	ElemType e;
	LinkList* p = L, * q;
	printf("当前表长为:%d\n", ListLength(L));  //注意指针L
	while (1)
	{
		printf("请输入删除值的位置:");
		scanf("%d", &i);
		if (i <= 0 || i > ListLength(L))
		{
			printf("输入错误!请重新输入!\n");
		}
		else
			break;
	}
	getchar();
	while (j < i && p != NULL)
	{
		j++;
		p = p->next;
	}
	if (p == NULL)
	{
		printf("查无此值!\n");
		Sleep(2000);
		return;
	}
	else
	{
		q = p->next;
		if (p == NULL)
		{
			printf("查无此值!\n");
			Sleep(2000);
			return;
		}
		e = q->data;
		p->next = q->next;
		free(q);
		printf("删除成功!\a");
		Sleep(2000);
	}
}
void DestroyList(LinkList* L)
{
	LinkList* pre = L, * p = L->next;
	while (p != NULL)   //逐一释放
	{
		free(pre);
		pre = p;
		p = pre->next;
	}
	free(pre);
	printf("销毁成功!\a");
	Sleep(2000);
}
int main()
{
	int n;
	LinkList L;
	InitList(&L);
	while (1) {
		system("cls");    //清屏函数
		Show_meau();
		printf("请输入1-8的数:");
		scanf("%d", &n);
		switch (n) {
		case 1:
			Search(&L);
			break;
		case 2:
			ListInsert(&L);
			break;
		case 3:
			ListDelete(&L);
			break;
		case 4:
			DispList(&L);
			break;
		case 5:
			Print_Length(&L);
    		break;
		case 6:
			DestroyList(&L);
			break;
		case 7:
			printf("........正在退出中........");
			Sleep(3000);
			system("cls");
			printf("\a退出成功!"),
				exit(0);
			break;
		case 8:
			Create_List(&L);
			break;
		default:
			printf("\a输入错误!请重新输入(1—8)!"),
				Sleep(2000);
			break;
		}
	}
	return 0;
}
  • 写回答

1条回答 默认 最新

  • BEI-TIAN-XUAN 2021-05-30 19:49
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档