超A的大叔 2021-03-13 20:01 采纳率: 16.7%
浏览 39

链表问题。。。。。。。。。。。。。。。

题目:假设某个单向循环链表的长度大于1,且表中既头结点也无头指针。已知S为指向链表中节点的某个指针,
试编写算法在链表中删除单向循环链表中指针S所指结点的前驱节点

#include <stdio.h>

#include <stdlib.h>

#define OVERFLOW -1
#define ERROR -1

typedef struct LNode 
{
	int data;
	int length;
	struct LNode *next;
}SqList;//创建单向循环链表
int create_Sq(SqList &L);
int DeleteS(SqList &L);
int create_Sq(SqList &L)
{
    LNode *p;
    LNode *head;
    LNode *tail;
    int elem;
	int length;
	printf("输入此循环链表的长度 length = ");
	scanf("%d", &length);
    head=NULL;
	tail=NULL;
    for(int i=1;i<=length;i++)
	{
		printf("输入第%d个元素的值 ", i);
		scanf("%d", &elem);
        p = (LNode*)malloc(sizeof(LNode));
		p->data = elem;
        if(head)
		{   //如果第一个结点不存在,即空链表
            head=tail=p;     //设置第一个结点
            head->next=NULL;
        }
        else
		{//链表非空
             p->next=tail->next ;
             tail->next=p;
        }
        tail = p;    //移动尾指针
    }
    tail->next=head;  
    return 0;
}
/*
函数功能:删除单向循环链表中指针S所指结点的前驱节点
函数入口:单向循环链表L
函数出口:单向循环链表L
*/
int DeleteS(SqList &L)
{
	int e;
	LNode *p,*q,*s;
	printf("输入要删除的元素:e ");
	scanf("%d",&e); 
	s->data=e;
	p=s;
	while(p->next->next!=s)
		p=p->next;
	q=p->next;
	p->next=s;
	free(q);
	return 0;


}
int main()
{
	int i;
	SqList L;
	create_Sq(L);
	DeleteS(L);
    for(i=0;i<L.length;i++)
	{
		printf("%d ",L.data[i]);
	}
	printf("\n");
	return 0;


	
}

VC6.0环境下报错cpp(84) : error C2109: subscript requires array or pointer type,求解

  • 写回答

1条回答 默认 最新

  • SoftwareTeacher 《编程之美》作者 2021-03-13 20:31
    关注

    你的 data 定义为 int,但是你的 L.data[i] 把data 当作数组或者指针。 所以有这个错误。 

    改为 L[i]

    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建