月间
个人学习记录,大部分是摘抄式的学习本
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 typedef struct Node
  5 {
  6     int data; //数据域
  7     struct Node * pNext;//指针域
  8 }NODE,*PNODE;
  9 
 10 //函数声明
 11 PNODE creat_list(void);
 12 void traverse_list(PNODE pHead);
 13 bool is_empty(PNODE pHead);
 14 int length_list(PNODE pHead);
 15 bool insert_list(PNODE ,int,int);
 16 bool delete_list(PNODE,int,int *);//  int*表示删除的数字
 17 void sort_list(PNODE);
 18 
 19 
 20 int main (void)
 21 {
 22     PNODE pHead = NULL; 
 23     int val;
 24 
 25     pHead = creat_list();//创建一个非循环单链表 ,并将该链表的头结点的地址付给pHead;
 26     traverse_list(pHead);
 27     insert_list(pHead,4,33);
 28     traverse_list(pHead);
 29     delete_list(pHead,5,&val);
 30     traverse_list(pHead);
 31     printf("删除的是%d\n",val);
 32 
 33     /*
 34     sort_list(pHead);
 35     traverse_list(pHead);
 36     int len = length_list(pHead);
 37     printf("链表的长度是:%d\n", len);
 38     /*    if(is_empty(pHead))
 39         printf("链表为空!");
 40     else
 41         printf("链表不空!");*/
 42 
 43     return 0;
 44 }
 45 
 46 PNODE creat_list(void)
 47 {
 48     int len;
 49     int i;
 50     int val;//临时存放用户输入结点的值
 51     PNODE pHead = (PNODE)malloc(sizeof(NODE));//pHead是指向头节点的指针,指向的是头节点
 52     if(NULL==pHead)
 53     {    
 54         printf("分配内存失败!\n");
 55         exit(-1);
 56     }
 57     PNODE pTail = pHead;
 58     pTail ->pNext = NULL;
 59 
 60     printf("请输入您需要生成的链表结点的个数:LEN=");
 61     scanf("%d",&len);
 62     for(i = 0;i<len;i++)
 63     {
 64         printf("请输入第%d个结点的值:",i+1);
 65         scanf("%d",&val);
 66         PNODE pNew  = (PNODE)malloc(sizeof(NODE));
 67         if(NULL==pNew)
 68         {    
 69             printf("分配内存失败!\n");
 70             exit(-1);
 71         }
 72         pNew->data = val;
 73         pTail->pNext = pNew;
 74         pNew->pNext = NULL;
 75         pTail = pNew;//pTail往后挪一位
 76 
 77     }
 78     return pHead;
 79 }
 80 
 81 void traverse_list(PNODE pHead)
 82 {
 83     PNODE p = pHead->pNext;
 84     while(NULL!=p)
 85     {
 86         printf("%d ",p->data);
 87         p = p->pNext;
 88     }
 89     printf("\n");
 90     return;
 91 }
 92 bool is_empty(PNODE pHead)
 93 {
 94     if(NULL==pHead->pNext)
 95         return true;
 96     else return false;
 97 }
 98 int length_list(PNODE pHead)
 99 {
100     int len = 0;
101     PNODE p = pHead->pNext;
102     while(NULL!=p)
103     {
104         len++;
105         p = p->pNext;
106     }
107     return len;
108 }
109 
110 void sort_list(PNODE pHead)
111 {
112     int i,j,t;
113     int len = length_list(pHead);
114     PNODE p,q;
115 
116     for(i=0, p = pHead->pNext;i<len-1; ++i,p=p->pNext)
117     {
118         for(j= i+1,q = p->pNext; j<len;++j, q = q->pNext)
119         {
120             if(p->data>q->data)
121             {
122                 t = p->data;
123                 p->data  = q->data;
124                 q->data = t;
125             }
126         }
127     }
128     return;
129 }
130 
131 //在pos前的位置上插入
132 bool insert_list(PNODE pHead ,int pos,int val)
133 {
134     PNODE p = pHead;
135     int i = 0;
136     //循环的结果是   p到了pos的前一个指针位置
137     for(i = 0; i<pos-1 ;i++)
138     {
139         p = p->pNext;
140     }
141     if(pos<0 ||p == NULL)
142     {
143         return false;
144     }
145     PNODE pNew = (PNODE)malloc(sizeof(NODE));
146     if(pNew ==NULL)
147     {
148         printf("申请内存失败!\n");
149         exit(-1);
150     }
151     pNew->data = val;
152     pNew->pNext = p->pNext;
153     p->pNext = pNew;
154     return true;
155 }
156 
157 bool delete_list(PNODE pHead,int pos,int *val)
158 {
159     PNODE p = pHead;
160     int i = 0;
161 
162     for(i = 0; i<pos-1 ;i++)
163     {
164         if(P==NULL)
165         {
166             break;
167         }
168         p = p->pNext;
169     }
170     if(pos<0||p->pNext ==NULL)
171     {
172         *val = 0;
173         return false;
174     }
175     PNODE q = p->pNext;
176     p->pNext = p->pNext->pNext;
177     *val = q->data;
178     free(q);
179     q = NULL;
180     return true;
181 }

 

posted on 2020-03-03 18:15  月间  阅读(134)  评论(0编辑  收藏  举报