首页 > AG新闻中心 > 公司新闻

AG视讯·官方网站|C语言-玩转链接14大功能

发布时间:2025-10-15 18:12:53    次浏览

C语言-玩转链接14大功能C语言-玩转链接14大功能#includestdio.h#includestdlib.h//结点的数据类型typedefstructNode{intdata;structNode*next;}Node;//链表类型typedef struct List{Node *head;}List;//1创建节点Node* CreateNode(int data){Node* PtrNode=malloc(sizeof(Node));PtrNode-data=data;PtrNode-next=NULL;return PtrNode;}//2向头结点位置插入新结点void PushHead(List *list,int data){Node*PtrNew=CreateNode(data);PtrNew-next=list-head;//如果链表有节点 list-head是一个节点的地址list-head=PtrNew;//如果链表中无节点}//3遍历链表void tralve(List*list){printf('链表中的元素为:');Node *PtrHead=list-head;//操作时指针指向可能发生变化if(!PtrHead){puts('空');}while(PtrHead){printf('%d ',PtrHead-data);PtrHead=PtrHead-next;}printf(' ');}//4 计算结点个数int length(List*list){int count =0;Node *PtrHead=list-head;while(PtrHead){count++;PtrHead=PtrHead-next;}return count;}//5 向指定的位置插入数据int insert(List*list, int position,int data){//position 0 1 2 3 4 ...if(position0||positionlength(list)){printf('插入位置不合法系统将默认向头节点插入 '); position=0;}Node*PtrNew=CreateNode(data);if(0==position){PtrNew-next=list-head;list-head=PtrNew;return 0;}Node*PtrHead=list-head;int i;for(i=0;iposition-1;i++){PtrHead=PtrHead-next;}PtrNew-next=PtrHead-next;PtrHead-next=PtrNew;}//6 向尾部插入void PushTail(List *list,int data){insert(list,length(list),data);}//7删除指定的位置的结点int delete(List *list,int position){if(position0||positionlength(list)){printf('坐标不合法 删除失败 ');return 0;}if(0==position){Node*PtrHead=list-head;list-head=list-head-next;free(PtrHead);PtrHead=NULL;return 0;}int i=0;Node*PtrHead=list-head;for(i=0;iposition-1;i++){PtrHead=PtrHead-next;}Node*PtrTemp=PtrHead-next;PtrHead-next=PtrTemp-next;free(PtrTemp);PtrTemp=NULL;}//8删除头结点void PopHead(List*list){delete(list,0);}//9删除尾结点void PopTail(List*list){delete(list,length(list)-1);}//10 判空int empty(List*list){return list-head==NULL;}//11 获取头结点int GetHead(List*list){if(!empty(list)){return list-head-data;}return -1;}//12 获取尾结点int GetTail(List *list){if(!empty(list)){Node*PtrHead=list-head;while(PtrHead-next!=NULL){PtrHead=PtrHead-next;}return PtrHead-data;}return -1;}//13 获取任意位置void GetElement(List*list,int position){printf('位置%2d的元素为:',position);int i;Node*PtrHead=list-head;for(i=0;iposition;i++){PtrHead=PtrHead-next;}printf('%d ',PtrHead-data);}//14 销毁链表void DetroyList(List*list){while(list-head!=NULL){Node*PtrHead=list-head-next;//存放所删除元素的next的值 也就是所要删除元素的下一个结点的地址free(list-head);list-head=PtrHead;}printf('销毁链表完成 ');}int main(){List list;list.head=NULL;//头指针PushHead(list,1);tralve(list);PushHead(list,2);tralve(list);PushHead(list,3);tralve(list);printf('lenght=%d ',length(list));insert(list,1,33);tralve(list);PushTail(list,11);tralve(list);delete(list,4);tralve(list);delete(list,1);tralve(list);PopHead(list);tralve(list);PopTail(list);tralve(list);PushHead(list,3);tralve(list);PushTail(list,1);tralve(list);printf('%s ',empty(list)?'链表为空':'链表非空');printf('头结点元素为:%d ',GetHead(list));printf('尾结点元素为:%d ',GetTail(list));GetElement(list,0);GetElement(list,1);GetElement(list,2);DetroyList(list);tralve(list);return 0;} 深圳远标教育ITjob培训中心,专注于C++培训,java培训,大数据培训,嵌入式培训等高端IT培训,顶级师资授课,真实项目实战,名企高薪就业。