数据结构笔记(1)

链表操作:

  初始化--->(1)含有头节点;(2)不含头节点。

  插入----->必须先找到插入节点前的一个节点,用p指向此节点,用q表示待插入节点;q申请后就对其进行操作,即q->next=p->next,p->next=pr;

  删除----->和插入一样,必须先找到删除节点前的一个节点,用p指向此节点,用q表示待删除节点;先用前一个节点表示出待删除节点,即q=p->next;然后对前一个节点进行操作,p->next=q->next,free(q);

  注:无论是插入,还是删除,都需要用一个新变量来表示待插入、删除(摧毁)节点。删除需要判断链表是否为空。

 

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef int datatype;
 4 typedef struct snode
 5 {
 6     datatype data;
 7     struct snode *next;
 8 }Node;
 9 int Insert(Node *head,int pos,datatype x)
10 {
11     Node *p=head,*q=NULL;
12     int i=0;
13     while (p->next!=NULL && i<pos-1)
14     {
15         p=p->next;
16         i++;
17     }
18     if (p!=NULL && i==pos-1)
19     {
20         if((q=(Node *)malloc(sizeof(Node)))!=NULL)
21         {
22             q->data=x;
23             q->next=p->next;
24             p->next=q;
25         }
26         return 1;
27     }
28     else
29     {
30         printf("error\n");
31         return 0;
32     }
33 }
34 void del(Node *head,int pos,datatype *x)
35 {
36     Node *p=head,*q=NULL;
37     int i=0;
38     while (p->next!=NULL && i<pos-1)
39     {
40         p=p->next;
41         i++;
42     }
43     if (p!=NULL && i==pos-1)
44     {
45         q=p->next;
46         *x=q->data;
47         p->next=q->next;
48         free(q);
49     }
50 }
51 void des(Node *head)
52 {
53     Node *p=head,*s=NULL;
54     while (p)
55     {
56         s=p;
57         p=p->next;
58         free(s);
59     }
60 }
61 int main()
62 {
63     Node head;
64     datatype x;
65     head.next=NULL;
66     return 0;
67 }

 

转载于:https://www.cnblogs.com/sy-me/p/6613623.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值