单链表的基本操作

由于做的毕业设计用到了链表,所以将就就链表的一些基本的操作自己写了下来,以后看看吧,省得每次用到链表都要自己写了,写一次就行了

(很多不合理的地方,以后留着改吧)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
        char str[100];  
        int num;        
        struct node *next;
}link;

link *cre_link()
{
     link *head = (link*)malloc(sizeof(link*));
     head->next = NULL;
     return head;
}


link *insert_link(link *head,link *new_node)
{
     link *temp = (link*)malloc(sizeof(link*));
     temp = head;
     if(temp->next == NULL)
     {
 temp->next = new_node;
 new_node->next = NULL;
 printf("head->next flag is %d\n",head->next->num);
          return head;
     }
     while(temp->next)
     {
          temp = temp->next;
     }
     temp->next = new_node;
     new_node->next = NULL;
     return head;



void display_link(link *head)
{
       link *temp = (link*)malloc(sizeof(link));
       temp = head->next;
  if(temp == NULL)
  {
  printf("empty\n");
  }
       while(temp)
       {
printf("%d ",temp->num);
                    printf("%s\n",temp->str);
                    temp = temp->next;
                    
       }
}


link* delete_node(link *head,char *ptr)
{
      link *p = (link*)malloc(sizeof(link));
      link *q = (link*)malloc(sizeof(link));
 p = q = head;
      while(strcmp(p->next->str,ptr))
 {
 p = p->next;
 q = p;
 }
 p = p->next;
 q->next = p->next;
 free(p);
 return head;
}


void find_node(link *head,char *ptr)
{
link *p = (link*)malloc(sizeof(link));
if(head->next == NULL)
{
printf("empty\n");
}
    p = head->next;
while(p)
{
if(strcmp(p->str,ptr) == 0)
{
             printf("the element is fined  %d  %s\n",p->num,p->str);
return;
}
p = p->next;
}
printf("no this element\n");
}


link *reverse_link(link *head)
{
    link *p,*s,*t; 
p=head; 
s=p->next; 
while(s->next!=NULL)//主要置换过程 

t=s->next; 
s->next=p;   
p=s;           
s=t; 

s->next=p; 
head->next->next=NULL;//收尾 
head->next=s;//赋头 
return head;
}

主函数就不用了,方便以后和我一样的菜鸟学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值