C语言链表

  1 #include"stdio.h"
  2 #include"stdlib.h"
  3 #include"malloc.h"
  4 
  5 
  6 const int maxlen=1000;//线性表的最大长度
  7 
  8 //------------线性表------------------
  9 struct List
 10 {
 11     int Data[maxlen];//存放数据
 12     int CurNum;//当前线性表
 13 };
 14 
 15 void Intialize(    List &A)//线性表初始化
 16 {
 17     A.CurNum = 0;//线性表元素个数为0
 18 }
 19 
 20 int Length(List &A)//求表长度的实现
 21 {
 22     return A.CurNum;
 23 }
 24 
 25 int Insert(    List &A,const int i,const int x)//插入元素运算对应的函数
 26 {
 27     if(A.CurNum==maxlen)printf("溢出!\n");//溢出,不能插入
 28     if(i<1||i>Length(A)+1)printf("插入范围有错!\n");//插入范围有错
 29     else {
 30         for(int j=A.CurNum-1;j>=i-1;j--){
 31             A.Data[j+1]=A.Data[j];
 32         }
 33         A.Data[i-1]=x;
 34         A.CurNum++;
 35         return 0;
 36     }
 37 }
 38 int  Get_int(List &A,const int i,int &x)//按序号取元素运算
 39 {
 40     if(i<=0||i>A.CurNum)printf("序号错误!\n");
 41     else {
 42         x=A.Data[i-1];
 43         return 0;
 44     }
 45 }
 46 //------------线性表------------------
 47 
 48 
 49 //-------------链表------------------
 50 typedef char type;
 51 typedef struct Linklist
 52 {
 53     type data;
 54     struct Linklist *next;
 55 }link_list;
 56 
 57 /*创建链表*/
 58 link_list *Create_list(link_list *head)
 59 {
 60     head = (link_list *)malloc(sizeof link_list);
 61     if(head==NULL)
 62     {
 63         printf("setup fail\n");
 64 
 65         exit(0);
 66     }
 67     head->data=NULL;
 68     head->next=NULL;
 69     return head;
 70 }
 71 
 72 /*向链表中插入一个元素*/
 73 void Insert_list(link_list *head,type data)
 74 {
 75     link_list *q=NULL;
 76     link_list *p=NULL;
 77     link_list *s=NULL;
 78     q=head;
 79     p=q->next;
 80     while(p!=NULL)
 81     {
 82         q=p;
 83         p=q->next;
 84     }
 85     s=(link_list *)malloc(sizeof link_list);
 86     s->data = data;
 87     q->next=s;
 88     s->next=p;
 89 }
 90 
 91 void browse(link_list *head)
 92 {
 93     link_list *q=NULL;
 94     q=head->next;
 95     while(q!=NULL)
 96     {
 97         printf("num:%c\n",q->data);
 98         q=q->next;
 99     }
100 }
101 
102 
103 /*查找元素 并返回位置*/
104 link_list *find_list(link_list *head,int data)
105 {
106     link_list *q=NULL;
107     link_list *p=NULL;
108     q=head;
109     p=q->next;
110     while(p!=NULL&&p->data!=data)
111     {
112         q=p;
113         p=q->next;
114     }
115     printf("num :%c data : %c\n",p->data);
116     return p;
117 }
118 int  main()
119 {
120     int middle=0;
121     int num=0;
122     int i=0;
123     link_list *head = NULL;
124     link_list *s = NULL;/*接收指针 case3的指针接收*/
125     head=Create_list(head);
126     printf("head->next %d\n",head->next);
127     printf("head->num %d\n",head->data);
128 
129 
130 
131     
132         Insert_list(head,'a');
133         Insert_list(head,'b');
134         Insert_list(head,'c');
135         //'A'++;
136     
137     browse(head);
138     
139 
140     //List A,B,C;
141     
142     return 0;
143 }

 

posted @ 2015-12-28 23:39  指间ゝ繁华初逝的格调  阅读(172)  评论(0编辑  收藏  举报