📄 operatelink.h
字号:
/*======================================*/
/*结构体定义 */
/*======================================*/
typedef struct Link{
int data;
struct Link *next;
}*Slink;
/*======================================*/
/*头插法 */
/*======================================*/
void InsertHead(Slink *head,int scan_max)
{
Slink s;
int i=0,data_x;
for(;i<scan_max;i++)
{
s=(Slink)malloc(sizeof(struct Link));
if(s!=NULL)
{
printf("元素%d:",i+1);
scanf("%d",&data_x);
s->data=data_x;
s->next=*head; //新节点NEXT指向原来头节点
*head=s; //头指针指向新头节点
}
else
printf("头指针错误1~\n");
}
}
/*======================================*/
/*尾插法 */
/*======================================*/
void InsertFoot(Slink head, int scan_max)
{
Slink temp,Strat,Foot=NULL;
int i=0,data_x;
Strat=head;
while(Strat!=NULL&&Strat->next!=NULL)
{
Strat=Strat->next;
}
Foot=Strat;
for(;i<scan_max;i++)
{
temp=(Slink)malloc(sizeof(struct Link));
if(temp!=NULL)
{
printf("元素%d:",i+1);
scanf("%d",&data_x);
temp->data=data_x;
Foot->next=temp; //指向新的尾节点
temp->next=NULL;
Foot=temp; //尾指针指向新尾节点
}
}
}
/*======================================*/
/*显示链表 */
/*======================================*/
void PrintLink(Slink head)
{
Slink L_one=head;
while(L_one!=NULL&&L_one->next!=NULL)
{
printf("%d",L_one->data);
L_one=L_one->next;
}
if(L_one==NULL)
printf("空表~\n");
else
{
printf("%d",L_one->data);
}
}
/*======================================*/
/*查找链表 */
/*======================================*/
void FindLink(Slink head, char find_x)
{
Slink L_one=head;
int i=0, flag;
while(L_one!=NULL&&L_one->next!=NULL)
{
i++;
if(L_one->data==find_x)
{
printf("找到[%d]元素在第%d个位置上",find_x,i);
flag=0;
break;
}
L_one=L_one->next;
}
//如果FLAG开关为1并相同就(在最后一个元素找到)
if(flag&&L_one->data==find_x)
printf("找到[%d]元素在第%d个位置上",find_x,i+1);
/* if(L_one->data==find_x)
printf("找到[%d]元素在第%d个位置上",find_x,i+1);
*/
}
/*======================================*/
/*删除链表 */
/*======================================*/
void DeleteLink(Slink &head, int position)
{
Slink Strat=head,temp;
int i=1;
while(Strat->next!=NULL&&i<position-1)
{
Strat=Strat->next;
i++;
}
if(Strat->next!=NULL)
{
if(Strat==head)
{
//第一个特殊位置的元素处理
if(position==1)
{
temp=head;
head=head->next;
free(temp);
}
//第二个特殊位置的元素处理
if(position==2)
{
temp=Strat->next;
Strat->next=temp->next;
free(temp);
}
}
else
{
temp=Strat->next;
Strat->next=temp->next;
free(temp);
}
}
//else
// head=NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -