1. 链表是个好东西(121.9.1)
2. 链表和数组区别及实现(122.9.2)
- 显示行号
:set nu
- link1.c
#include <stdio.h>
struct Test
{
int data;
struct Test *next;
};
int main()
{
int i;
int array[]={1,2,3};
for(i=0;i<sizeof(array)/sizeof(array[0]);i++){
printf("%d ",array[i]);
}
putchar('\n');
struct Test t1={1,NULL};
struct Test t2={2,NULL};
struct Test t3={3,NULL};
t1.next=&t2;
t2.next=&t3;
printf("use t1 to print three nums\n");
printf("%d %d %d\n",t1.data,t1.next->data,t1.next->next->data);
return 0;
}
3. 链表静态添加和动态遍历(123.9.3)
- link1.c
#include <stdio.h>
struct Student
{
char *name;
int age;
int (*p)(int age);
struct Student *next;
};
struct Test
{
int data;
struct Test *next;
};
void printLink(struct Test *head)
{
struct Test *point;
point=head;
while(point != NULL){
printf("%d ",point->data);
point=point->next;
}
putchar('\n');
}
int main()
{
int i;
int array[]={1,2,3};
for(i=0;i<sizeof(array)/sizeof(array[0]);i++){
printf("%d ",array[i]);
}
putchar('\n');
struct Test t1={1,NULL};
struct Test t2={2,NULL};
struct Test t3={3,NULL};
struct Test t4={4,NULL};
struct Test t5={5,NULL};
struct Test t6={6,NULL};
t1.next=&t2;
t2.next=&t3;
t3.next=&t4;
t4.next=&t5;
t5.next=&t6;
printf("use t1 to print three nums:\n");
// printf("%d %d %d %d\n",t1.data,t1.next->data,t1.next->next->data,t1.next->next->next->data);
printLink(&t1);
return 0;
}
4. 链表遍历中的point=point-next(124.9.4)
5. 统计链表节点个数及链表查找(125.9.5)
在默认模式下:
- 10yy:复制10行,再滚至黏贴处,按p粘贴
- 5dd:删除此后的5行
- p:复制粘贴当前行代码
- u:撤回
- ctrl+r:重做
在输入模式下:
- ctrl+p:关键字补全
- ctrl+n:回到起点
#include <stdio.h>
/*struct Student
{
char *name;
int age;
int (*p)(int age);
struct Student *next;
};*/
struct Test
{
int data;
struct Test *next;
};
void printLink(struct Test *head)
{
struct Test *point;
point=head;
while(point != NULL){
printf("%d ",point->data);
point=point->next;
}
putchar('\n');
}
int getLinkTotalNodeNum(struct Test *head)
{
int cnt=0;
while(head != NULL){
cnt++;
head=head->next;
}
return cnt;
}
int searchLink(struct Test *head,int data)
{
while(head != NULL){
if(head->data==data){
return 1;
}
head=head->next;
}
return 0;
}
int main()
{
int i;
int array[]={1,2,3};
for(i=0;i<sizeof(array)/sizeof(array[0]);i++){
printf("%d ",array[i]);
}
putchar('\n');
struct Test t1={1,NULL};
struct Test t2={2,NULL};
struct Test t3={3,NULL};
struct Test t4={4,NULL};
struct Test t5={5,NULL};
struct Test t6={6,NULL};
t1.next=&t2;
t2.next=&t3;
t3.next=&t4;
t4.next=&t5;
t5.next=&t6;
printf("use t1 to print three nums:\n");
// printf("%d %d %d %d\n",t1.data,t1.next->data,t1.next->next->data,t1.next->next->next->data);
printLink(&t1);
int ret=getLinkTotalNodeNum(&t1);
printf("total num = %d\n",ret);
ret=searchLink(&t1,2);
if(ret==1){
printf("have 2\n");
}else{
printf("no 2\n");
};
ret=searchLink(&t1,8);
if(ret==1){
printf("have 8\n");
}else{
printf("no 8\n");
};
return 0;
}