码迷,mamicode.com
首页 > 编程语言 > 详细

数组与链表

时间:2019-12-21 10:06:58      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:函数   生成   new   turn   creat   lis   效率   插入   while   

链表和数组

数组的优点: 存取速度快   缺点:  1.需要连续很大的内存(数组创建的时候生成的内存地址是连续的)   2.插入和删除元素的效率很低

链表的优点:1.不需要连续很大的内存  2.插入和删除元素效率高(修改链(指针)就可以完成)     缺点:查找的时候效率低 (存储的时候排序)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------   

1.用结构体创建 包括数据域和指针域

链表的创建:可以用一个函数来创建然后返回头指针。(用malloc申请动态内存(堆) 因为创建完了该函数结束会自动释放内存)

struct Node*create_list(void){
int len,i,val;      // 变量len是要创建节点个数         val用来存临时数据

struct Node *pHead=(struct Node*)malloc(sizeof(struct Node));
if(NULL==pHead){
printf("分配失败\n");
exit(-1);
}

struct Node*pTail=pHead;
pTail->pNext=NULL;
printf("请输入你要生成节点的个数:\n");
scanf("%d",&len);

for(i=0;i<len;i++){
printf("请输入第%d个节点的数据:",i+1);
scanf("%d",&val);

struct Node*pNew=(struct Node*)malloc(sizeof(struct Node));
if(NULL==pNew){
printf("分配失败\n");
exit(-1);
}
pNew->data=val;
pTail->pNext=pNew;
pNew->pNext=NULL;
pTail=pNew;
}
return pHead;
}

链表的遍历

void traverse_list(struct Node* pHead){
struct Node*p=pHead->pNext;
while(NULL!=p){
printf("%d\n",p->data);
p=p->pNext;
}
return ;
}

链表的查找    (按序号查找)

struct Node* fine_list(struct Node* pHead,int k){
struct Node*p=pHead;
int i=0;
while(p!=NULL&&i<k){
p=p->pNext;
i++;
}
if(i==k) return p;
else return NULL;
}

链表的插入(1.把插入的指针指向要插入位置后面的指针 2.把要插入前面的指针指向插入的指针   顺序不能颠倒)和删除(类似改变指针连接关系   注意保存要删除的地址  不然会造成内存泄漏)

明天再写

19/12/21 00:30

数组与链表

标签:函数   生成   new   turn   creat   lis   效率   插入   while   

原文地址:https://www.cnblogs.com/cccczqccc/p/12075655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!