拼装吉吉 2021-04-24 11:58 采纳率: 0%
浏览 427

引发了未经处理的异常:读取访问权限冲突。 **p** 是 nullptr?

大佬们救救。

写个链式表多项式,老是填一些奇怪的错误,能帮忙看看吗

#include <stdio.h>
typedef int datatype;
#include <stdlib.h>
#define NULL 0
typedef struct node
{
	datatype xi;
	datatype zhi;
	struct node* next;
}node;
void init(node** head) {
	*head = (node*)malloc(sizeof(node));
	(*head)->next = NULL;
}
int length(node* head) {
	node* p; int n = 0;
	p = head;
	while (p->next) {
		p = p->next;
		n++;
	}
	return n;
}
node* insert(node* head, int i, datatype xi,datatype zhi) {
	int j = 0;
	node* p;
	init(&p);
	p = head->next;
	//j计数
	//i是表示插入的位置
	if (!p) {
	}
	while (j < i - 1 && p->next != NULL) {
		p = p->next;
		j = j++;
	}
	if (j == i - 1) {
		node* q = (node*)malloc(sizeof(node));
		init(&q);
		q->xi = xi;
		q->zhi = zhi;
		q->next = p->next;
		p->next = q;
		return head;
	}
}
int find(node* head, int i, datatype* x,datatype*y) {
	int j = 0;
	node* p = head->next;
	while (j < i && p->next != NULL) {
		j = j++;
		p = p->next;
	}
	if (j == i) {
		*x = p->xi;
		*y = p->zhi;		
		return 1;
	}
	return 0;
}
node* deleted(node* head, int i) {
	node* p = head->next;
	int j = 0;
	while (j < i - 1 && p->next != NULL) {
		j = j++;
		p = p->next;
	}if (j == i - 1) {
		p->next = (p->next)->next;
		return head;
	}
}
/*node* sort(node* head1) {
	node* p;
	node* q;
	int j=0;
	int i = length(head1);
	int k;
	init(&p); 
	init(&q);
	for (k = 1; i-1;k++) {
		q = head1->next;
		while (j < i && q->next != NULL) {
			if (q->zhi < (q->next)->zhi) {
				p->next = q->next;
				q->next = q;
				q = p;
			}
			j = j++;
			p = p->next;
		}
	}
	return head1;
}
int sum(node* head1, node* head2) {
	node* head3;
	node* p;
	node* q;
	init(&p);
	init(&q);
	init(&head3);
	int i, j, len1, len2 = 0;
	int count = 1;
	p = head1->next;
	q = head2->next;
	len1 = length(p);
	len2 = length(q);
		for (j = 0; j <= len1; j++) {
			for (i = 0; i <= len2; i++) {
				if (p->zhi = q->zhi)
				{
					head3->xi = p->xi +q->xi;
					head3->zhi = p->zhi;
					head3 = head3->next;
					p = p->next;
					q = q->next;
				}
				else
				{
					head3 = p;
					head3 = head3->next;
					head3 = q;
					head3 = head3->next;
					p = p->next;
					q = q->next;
				}
			}
		}
		sort(head3);
		int len3 = length(head3);
		int x, y;
		for (i = 1; len3; i++) {
			find(head3, i, &x, &y);
			printf("%5dx^%d", x, y);
			if (i < len3)
			{
				printf("    +");
			}
		}
		return 1;
}

int subtract(node* head1, node* head2) {
	node* head3;
	node* p;
	node* q;
	init(&p);
	init(&q);
	init(&head3);
	int i, j, len1, len2 = 0;
	int count = 1;
	p = head1->next;
	q = head2->next;
	len1 = length(p);
	len2 = length(q);
	for (j = 0; j <= len1; j++) {
		for (i = 0; i <= len2; i++) {
			if (p->zhi = q->zhi)
			{
				head3->xi = p->xi + q->xi;
				head3->zhi = p->zhi;
				head3 = head3->next;
				p = p->next;
				q = q->next;
			}
			else
			{
				head3 = p;
				head3 = head3->next;
				head3 = q;
				head3 = head3->next;
				p = p->next;
				q = q->next;
			}
		}
	}
	sort(head3);
	int len3 = length(head3);
	int x, y;
	for (i = 1; len3; i++) {
		find(head3, i, &x, &y);
		printf("%5dx^%d", x, y);
		if (i < len3)
		{
			printf("    +");
		}
	}
	return 1;

}*/
int main() {
	node* head1;
	node* head2;
	int len, x,y;
	init(&head1);
	init(&head2);
	len = length(head1);
	printf("%5d\n", len);
	insert(head1, 1, 3, 3);
	insert(head1, 2, 5, 2);
	insert(head1, 3, 8, 1);
	printf("%5d\n", length(head1));
	for (int i = 1; i <= length(head1); i++) {
		find(head1, i, &x,&y);
		printf("%5dx^%d", x,y);
		if(i<length(head1))
		{
			printf("    +");
		}
	}
	printf("\n");
	insert(head2, 1, 3, 4);
	insert(head2, 2, 8, 1);
	insert(head2, 3, 6, 3);
//	sort(head2);
	for (int i = 1; i <= length(head2); i++) {
		find(head2, i, &x, &y);
		printf("%5dx^%d", x, y);
		if (i < length(head2))
		{
			printf("    +");
		}
	}

}



/*1234

2134
2314
2341

3241
3421
3421

4321
4321
4321
*/

爆这个错误

  • 写回答

2条回答 默认 最新

  • __You__You__ 2021-10-08 19:45
    关注

    解决了么,我也出现了这样的错

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)