怎么建立没有头结点和头指针的单循环链表,并且怎么输出?帮我编一下,数据域是整数!
发布网友
发布时间:2022-06-03 14:31
我来回答
共1个回答
热心网友
时间:2023-10-21 16:50
这是我的实验课的题,你可以参考一下:1. 将其建成带头结点的单链表。
2. 并将34.67插入到第四个结点的后边。
3. 删除第四个结点。/*
已知线性表 (3.5,2.8,23.56,42.78,56.32)。
1. 将其建成带头结点的单链表。
2. 并将34.67插入到第四个结点的后边。
3. 删除第四个结点。
*/
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define N 7
typedef int Status;
typedef double ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;Status InitList_L(LinkList *L)
{
*L=(LinkList)malloc(sizeof(LNode));
if(!L) return OVERFLOW;
(*L)->next=NULL;
return OK;
}Status ListInsert_L(LinkList L,int i,ElemType e)
{
LinkList p,q;
p=L;
int j=0;
while((p->next)&&j<i-1)
{
p=p->next;
++j;
}
q=(LinkList)malloc(sizeof(LNode));
if(!p) return ERROR;
q->data=e;
q->next=p->next;
p->next=q;
return OK;
}Status ListDelete_L(LinkList L,int i,ElemType *e)
{
LinkList p,q;
p=L;
int j=0;
while((p->next)&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1) return ERROR;
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
return OK;
}void print(LinkList p)
{
while(p)
{
printf("%0.2f->",p->data);
p=p->next;
}
printf("\n");
}void main()
{
LinkList L,p,q;
int i;
double y,x=34.67;
double a[N]={3.5,2.8,23.56,42.78,56.32};
InitList_L(&L);
p=L;
for(i=N-2;i>=0;i--)
ListInsert_L(p,1,a[i]);
p=L->next;
print(p);
p=L;
ListInsert_L(p,4,x);
p=L->next;
print(p);
p=L;
ListInsert_L(p,4,x);
p=L->next;
print(p);
q=L;
ListDelete_L(q,4,&y);
q=L->next;
print(p);
printf("%0.2lf\n",y);
}