永发信息网

数据结构(C语言版)删除节点

答案:1  悬赏:20  手机版
解决时间 2021-08-18 13:10
  • 提问者网友:树红树绿
  • 2021-08-18 06:26

以下是我们老师写的添加节点,需要再写个删除节点的。要直接加在这个程序中的。谢谢!!

#include <stdio.h>

#define LIST_INIT_SIZE 100
#define LIST_INCREMENT 10
typedef char ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize ;
}SqList;

SqList * InitList()
{
SqList *l=NULL;

l->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!l->elem) {printf("malloc error!\n"); return NULL;}
l->length=0;
l->listsize=LIST_INIT_SIZE;
printf("ok!\n");
return l;
}

ListInsert_sq(SqList *l, int i, ElemType e)
{ ElemType *sq,*p,*q;
if ( i<1|| i> l->length+1) {printf("location overflow!\n"); return(0); }
if (l->length >= l->listsize)
{ sq = (ElemType *) realloc (l->elem, (l->listsize + LIST_INCREMENT)
* sizeof (ElemType));
if (!sq) {printf("malloc error!\n"); return 0;}
l->elem = sq;
l->listsize += LIST_INCREMENT;
}
p = & l->elem[l->length - 1];
q = & l->elem[i - 1];
for (p; p >= q; --p)
*(p+1) = *p;
*q = e;
l->length ++;
return 1;
}

ElemType GetElem(SqList *l,int i)
{
return l->elem[i-1];
}

int ListLength(SqList *l)
{ return l->length;
}

main()
{ int i,n;
SqList *l;
l=InitList();
ListInsert_sq(l,1,'C');
ListInsert_sq(l,2,'h');
ListInsert_sq(l,3,'i');
ListInsert_sq(l,4,'n');
ListInsert_sq(l,5,'a');
n=ListLength(l);

for(i=1;i<=n;i++)
printf("%c", GetElem(l,i));
printf("\n");
}

最佳答案
  • 五星知识达人网友:摆渡翁
  • 2021-08-18 07:32
兄弟,您说是您老是写的是吧,我想给您说的是您老是写的InitList()这个函数都有错,里面的SqList *l=NULL;之后又在试用l->elem,这怎么讲?l是个空指针怎么能使用?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯