文档介绍:1、帮助读者复习C语言程序设计中的知识。
2、熟悉线性表的逻辑结构。
3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。
二、实验内容
实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除s->data=x;
q=*p;
if (i==1) /**//*插入的结点作为头结点*/
{
s->next=q;
*p=s;
}
else
{
while (j<i-1 && q->next!=NULL) /**//*查找第i-1个结点*/
{
q=q->next;j++;
}
if (j==i-1) /**//*找到了第i-1个结点,由q指向它*/
{
s->next=q->next; /**//*将结点s插入到q结点之后*/
q->next=s;
}
else
printf("位置参数不正确!\n");
}
}
//*********************************************************删除结点del()
void del(struct LNode **p,int i)
{
int j=1;
struct LNode *q=*p,*t;
if (i==1) /**//*删除链表的头结点*/
{
t=q;
*p=q->next;
}
else
{
while (j<i-1 && q->next!=NULL) /**//*查找第i-1个结点*/
{
q=q->next;j++;
}
if (q->next!=NULL && j==i-1) /**//*找到第i-1个结点,由q指向它*/
{
t=q->next; /**//*t指向要删除的结点*/
q->next=t->next; /**//*将q之后的结点删除*/
}
else printf("位置参数不正确!\n");
}
if (t!=NULL) /**//*在t不为空时释放该结点*/
free(t);
}
//********************************************************显示链表display()
void display(struct LNode **p)
{
struct LNode *q;
q=*p;
printf("单链表显示:");
if (q==NULL) /**//*链表为空时*/
printf("链表为空!");
else if (q->next==NULL) /**//*链表只有一个结点时*/
printf("%c\n",q->data);
else { /**//*链表存在一个以上的结点时*/
while (q->next!=NULL) /**//*显示前面的结点*/
{
printf("%c→",q->data);q=q->next;
}
printf("%c",q->data); /**//*显示最后一个结点*/
}
printf("\n");
}
void main()
{
struct LNode *head;
setnull(&head);
insert(&head,'a',1);