C++鏈表操作實際應用技巧分享
作者:佚名 
  我們在這里將會以一段代碼示例來為大家詳細講解有關C++鏈表操作的實現方法,希望大家可以從中掌握到其中的應用技巧。
 C++編程語言應用范圍廣泛,在開發(fā)人員眼中,它占據著非常重要的地位。在這里我們可以通過對C++鏈表操作的相關技巧,來充分了解一下這一語言的應用方式以及他的應用能給我們帶來哪些不同的感受。
C++鏈表操作代碼示例:
- // linklist.cpp : 定義控制臺應用程序的入口點。
 - #include "stdafx.h"
 - #include "malloc.h"
 - #include "stdlib.h"
 - #define NULL 0
 - #define LEN sizeof(struct student)
 - struct student
 - {
 - long num;
 - float score;
 - struct student* next;
 - };
 - int n;
 - struct student* creat()
 - {
 - struct student *head;
 - struct student *p1,*p2;
 - n=0;
 - p1=p2=(struct student*)malloc(LEN);
 - scanf("%ld",&p1->num);
 - scanf("%f",&p1->score);
 - head=NULL;
 - while (p1->num!=0)
 - {
 - n++;
 - if (n==1)
 - {
 - head=p1;
 - }
 - else
 - {
 - p2->next=p1;
 - }
 - p2=p1;
 - p1=(struct student*)malloc(LEN);
 - scanf("%ld",&p1->num);
 - if (p1->num==0)
 - break;
 - scanf("%f",&p1->score);
 - }
 - p2->next=NULL;
 - return (head);
 - };
 - void print(struct student *head)
 - {
 - struct student *p;
 - printf("\n New,These %d records are:\n",n);
 - p=head;
 - if (head!=NULL)
 - {
 - do
 - {
 - printf("%d %5.1f\n",p->num,p->score);
 - pp=p->next;
 - }while (p!=NULL);
 - }
 - }
 - struct student* insert(struct student *head,struct student *stud)
 - {
 - struct student *p0, *p1, *p2;
 - p1=head;
 - p0=stud;
 - if (head==NULL)
 - {
 - head=p0;
 - p0->next=NULL;//insert into head point
 - }
 - else
 - {
 - while ((p0->num>p1->num)&&(p1->next!=NULL))
 - {
 - p2=p1; //p2 is point to just p1 point to node;
 - p1p1=p1->next;
 - }
 - if (p0->num<=p1->num)
 - {
 - if (p1==head)
 - {
 - head=p0;//insert into before first node
 - }
 - else
 - {
 - p2->next=p0;//insert into after point p2
 - }
 - p0->next=p1;
 - }
 - else
 - {
 - p1->next=p0; //insert into after last point
 - p0->next=NULL;
 - }
 - }
 - n++;
 - return(head);
 - };
 - struct student* del(struct student *head,long num)
 - {
 - struct student *p1, *p2;
 - if (head==NULL)
 - {
 - printf("\n list Null!\n");
 - return (head);
 - }
 - p1=head;
 - while (num!=p1->num&&p1->next!=NULL)
 - //find num if equal p1->num
 - {
 - p2=p1;
 - p1p1=p1->next;
 - }
 - if (num==p1->num)
 - {
 - if (p1==head)
 - head=p1->next;//delete head node because num=head.num
 - else
 - p2->next=p1->next;//delete node. node is not head point
 - printf("delete:%ld\n",num);
 - n--;
 - }
 - else
 - {
 - printf("%ld not been found!\n",num);
 - }
 - return (head);
 - };
 - int _tmain(int argc, _TCHAR* argv[])
 - {
 - struct student *head,*end;
 - head=creat();
 - print(head);
 - struct student insertnode;
 - insertnode.num=3;
 - insertnode.score=900;
 - head=insert(head,&insertnode);
 - print(head);
 - head=del(head,3);
 - print(head);
 - return 0;
 - }
 
C++鏈表操作的相關實現方法就為大家介紹到這里。
【編輯推薦】
責任編輯:曹凱 
                    來源:
                    博客園
 














 
 
 
 
 
 
 