单链表知识总结(C语言)

通过结构体指针将结构体变量与结构体变量连接起来的线性表称为链表。
一、创建链表
(一)结构体指针

struct Node{
   int data;           //数据域
   struct Node *next;  //指针域
};

(二)将结构体指针变为结构体变量——动态内存申请

struct Node* createList(){
  struct Node* headNode = (struct Node*)malloc(sizeof(struct Node));
  //HeadNode就成为了一个结构体变量
 headNode->next=NULL;//将变量初始化
 return headNode;
}

二、创建结点

struct Node* createNode(int data){
  struct Node* newNode = (struct Node*)malloc(struct Node);
  newNode->data = data;
  newNode->next = NULL;
  return newNode;
}

三、插入结点
(一)头插法

//参数为插入的链表以及数据
void insertNodeByHead(struct Node* headNode, int data){
  struct Node* newNode=createNode(data);
  //顺序不可颠倒,否则会导致newNode->next=newNode
  newNode->next=headNode->next;
  headNode->next=newNode;
}

(二)尾插法

void insertNodeByTail(struct Node*tailNode, int data){
   struct Node* newNode=createNode(data);
   tailNode->next=newNode;
   tailNode=newNode;
}

三、打印(遍历)结点

void print(struct headNode* List){
  struct Node* pMove=headNode->next;//从第二个结点开始,头结点一般没有数据
  while(pMove){
     printf("%d",pMove->data);
     pMove=pMove->next;
  }
  printf("\n");
}

四、删除结点(指定位置删除)

void deleteNode(struct Node* headNode,int pData){
  struct Node* p=headNode->next;
  struct Node* pFront=headNode;
  if(p->data==NULL)
     printf("链表为空!\n");  
  else{  
     while(p->data!=pData){
        pFront=p;
        p=p->next;
        if(p==NULL){
           printf("未找到该数据!\n")
           return;
     }
     pFront->next=p->next;
     free(p);
   }  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值