码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构链表学习

时间:2014-05-04 10:13:28      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   ext   

  今天初步学习数据结构链表,学习过程中感觉对于指针的理解还差很多,而且对于VS的调试也不会使用,调查问题只能靠一遍一遍的梳理逻辑,效率不是一般的低下。。接下来得赶紧学习下VS的使用。。

 

  今天链表只是初步学习,写的例子也比较简单,如下: 

定义链表的数据结构,只简单的定义了一个数据和一个指向后继的指针

1 struct List {
2     int num;
3     List *next;
4 };

接下来就是链表的创建,返回一个指针地址赋给主函数中的头指针,用于之后的增删改查等等

bubuko.com,布布扣
 1 List *create(int n) {
 2     List *p = new List;
 3     p->next = NULL;
 4     for(int i=0;i<n;i++) {
 5         List *myList = new List;
 6         cin>>myList->num;
 7         myList->next = p->next;
 8         p->next = myList;
 9     };
10     return p->next;
11 };
bubuko.com,布布扣

 

然后是删除、插入以及输出函数,不在赘述:

bubuko.com,布布扣
 1 void print(List *p,int n) {
 2     for (int i=0;i<n;i++) {
 3         cout<<p->num<<endl;
 4         p = p->next;
 5     }
 6 };
 7 
 8 List *del(List *p,int n,int delNum) {
 9     List *first = p;
10     List *previous;
11     for (int i=0;i<n;i++) {
12         if(p->num == delNum) {
13             if (i == 0) {
14                 first = p->next;
15                 break;
16             } else {
17                 previous->next = p->next;
18                 break;
19             }
20         } else {
21             previous = p;
22             p = p->next;
23         }
24     }
25     return first;
26 };
27 
28 List *insert(List *p,int n,int insNum,List *insList) {
29     List *first = p;
30     for (int i=0;i<n;i++) {
31         if(p->num == insNum) {
32             insList->next = p->next;
33             p->next = insList;
34             break;
35         } else {
36             p = p->next;
37         }
38     }
39     return first;
40 };
bubuko.com,布布扣

 

最后是我们的main函数:

bubuko.com,布布扣
 1 typedef int INTER;
 2 int main() {
 3     List *create(INTER);
 4     void print(List *,INTER);
 5     List *del(List *,INTER,INTER);
 6     List *insert(List *,INTER,INTER,List *);
 7     cout<<"List Study ---------> List create."<<endl;
 8     List *first = NULL;
 9     INTER n = 5;
10     first = create(n);
11     print(first,n);
12     cout<<"List Study ---------> List delete."<<endl;
13     INTER delNum;
14     cin>>delNum;
15     first = del(first,n,delNum);
16     n--;
17     print(first,n);
18     cout<<"List Study ---------> List insert."<<endl;
19     INTER insNum;
20     cin>>insNum;
21     List insList = {15,NULL};
22     first = insert(first,n,insNum,&insList);
23     n++;
24     print(first,n);
25     cout<<"List Study ---------> List end."<<endl;
26     system("pause");
27     return 0;
28 };
bubuko.com,布布扣

 

如此,一个简单的链表就实现了,功能只有简单的输出、删除和插入,只是练习用,因此插入和删除中并未进行任何的容错处理。

数据结构链表学习,布布扣,bubuko.com

数据结构链表学习

标签:style   blog   class   code   java   ext   

原文地址:http://www.cnblogs.com/DARKDD/p/3705824.html

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