📄 xianxinglianbiao.cpp
字号:
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *next;
}SLNode;
void ListInitiate(SLNode **head)
{/*如果有内存空间,申请头结点并使头指针head指向头结点*/
if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL)
exit(1);
(*head)->next=NULL; //置链尾标记NULL
}
int ListLength(SLNode *head)
{
SLNode *p=head; //P指向首元结点
int size=0;
while(p->next != NULL) //循环计数
{
p=p->next;
size++;
}
return size;
}
int ListInsert(SLNode *head,int i,DataType x)
{/*在代都结点的单链表head的数据元素ai节点前插入一个存放数据元素x的结点*/
SLNode *p,*q;
int j=-1;
p=head; //P指向首元结点
while(p->next !=NULL && j<i-1)
{//最终让指针p指向数据元素ai-1结点
p=p->next;
j++;
}
if(j!=i-1)
{
printf("插入位置参数错误\n");
return 0;
}
//生成新结点由指针q指示
if((q=(SLNode *)malloc(sizeof(SLNode)))==NULL)
exit(1);
q->data=x;
q->next=p->next; //给指针q->next赋值
p->next=q; //给指针q->next重新赋值
return 1;
}
int ListDelete(SLNode *head,int i,DataType *x)
{/*删除带头结点的单链表head的数据元素ai结点*/
/*删除结点的数据元素域由x带回。删除成功返回1,失败返回0*/
SLNode *p,*s;
int j=-1;
p=head; //P指向首元结点
while(p->next != NULL && p->next->next != NULL && j<i-1)
{//最终让指针p指向数据元素ai-1结点
p=p->next;
j++;
}
if(j!=i-1)
{
printf("插入位置参数错\n");
return 0;
}
s=p->next; //指针s指向数据元素ai结点
*x=s->data; //把指针s所指结点的数据元素域值赋予x
p->next=p->next->next; //把数据元素ai结点从单链表中删除
free(s); //释放指针s所指结点的内存空间
return 1;
}
int ListGet(SLNode *head,int i,DataType *x)
{//取数据元素ai和删除函数类同,只是不删除数据元素ai结点
SLNode *p;
int j=-1;
p=head;
while(p->next != NULL && j<i)
{
p=p->next;
j++;
}
if(j!=i)
{
printf("取元素位置参数错\n");
return 0;
}
*x=p->data;
return 1;
}
void Destroy(SLNode **head)
{
SLNode *p,*p1;
p=*head;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
*head=NULL;
}
void main(void)
{
SLNode *head;
int i,x;
ListInitiate(&head);
for(i=0;i<10;i++)
{
if(ListInsert(head,i,i+1)==0) //插入10个数据元素
{
printf("错误\n");
return ;
}
}
if(ListDelete(head,4,&x)==0) //删除数据元素5
{
printf("error\n");
return;
}
for(i=0;i<ListLength(head);i++)
{
if(ListGet(head,i,&x)==0) //取元素
{
printf("错误\n");
return ;
}
else
printf("%d,",x);//显示数据元素
}
Destroy(&head);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -