1.有序单链表的操作集合有如下操作:初始化、插入、删除、撤销,使用头文件单链表的代码。
2.编写主函数main()验证所设计的有序单链表是否能正确插入、删除。
头文件
typedef struct SingleNode
{
ElemType data;
struct SingleNode *next;
}SingleLinkedList;
void ListInitiate(SingleLinkedList **head)
{
if((*head = (SingleLinkedList*)malloc(sizeof(SingleLinkedList)))==NULL)
exit(1);
(*head)->next = NULL;
}
void ListInsert(SingleLinkedList *head,ElemType x)
{
SingleLinkedList *p, *q,*h;
p = head->next;
q = head;
while(p!=NULL&&p->data <=x)
{
q = p;
p = p->next;
}
h = (SingleLinkedList*)malloc(sizeof(SingleLinkedList));
h-> data = x;
h->next = q->next;
q->next = h;
}
int ListDelete(SingleLinkedList *head,ElemType x)
{
SingleLinkedList *p, *q;
p = head;
while(p->next!= NULL)
{
if(p->next->data == x)
{
break;
}
p=p->next;
}
if(p->next == NULL)
return 0;
else
{
q=p->next;
p->next = p->next->next;
free(q);
return 1;
}
}
void Destroy(SingleLinkedList **head)
{
SingleLinkedList *p, *q;
p = *head;
while(p != NULL)
{
q = p;
p = p->next;
free(q);
}
*head = NULL;
}
int listlength(SingleLinkedList *head)
{
SingleLinkedList *p=head;
int size = 0;
while(p->next!=NULL)
{
p=p->next;
size++;
}
return size;
}
源文件
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef int ElemType;
#include"LinkedList.h"
int main(void)
{
SingleLinkedList *head,*p;
ListInitiate(&head);
int x,n,i,s,t,m;
printf("请选择输入多少个数字:");
scanf("%d",&n);
for(i = 0;i < n;i++)
{
printf("第%d个数字是:",i+1);
scanf("%d",&x);
ListInsert(head,x);
}
p=head;
for(i = 0;i < n;i++)
{
printf("%5d",p->next->data);
p=p->next;
}
printf("\n输入你要删除的数字:");
scanf("%d",&s);
m=ListDelete(head,s);
if(m=0)
printf("删除失败");
p=head;
t=listlength(head);
for(i = 0;i < t;i++)
{
printf("%5d",p->next->data);
p=p->next;
}
return 0;
}
https://blog.csdn.net/qq_66451743/article/details/125025020