[프로그래머 면접 보전] 데이터 구조 기초 단일 체인 표: 생 성 | 길이 구하 기 | 삽입 | 삭제 | 정렬 | 인쇄 | 역 설정

#include #include
//         :   1:typedef  :http://blog.csdn.net/anton_6/article/details/6650726 typedef struct LineLink { int data; struct LineLink *next; }node;     :typedef struct LineLink node;
//      :

typedef struct LNode  
{  
    ElemType data;  
    struct LNode *next;  
}LNode,*LinkList;
//      

4. 567913. 주의: 1. 엄 서 에서 링크 구조 체 에 LineLink 유형의 일반 변수 와 포인터 변수 LineLink * 를 만 들 었 습 니 다. 여기 서 일반 변 수 를 만 들 고 지침 을 추가 할 때 정 의 를 내 리 는 것 을 말 합 니 다. 더욱 간편 합 니 다.
node *Creat()
{
	node *head,*p,*s;//       ,          ,      
	head=(node *)malloc(sizeof(node));//        
	p=head;//           
	int x,cycle=1;//    x         cycle
	while(cycle)
	{
		scanf("%d",&x);//    
		if(x)
		{
			s=(node*)malloc(sizeof(node));//      
			s->data=x;
			p->next=s;//              
			p=p->next;//           
		}
		else
			cycle=0;
	}
 p->next=NULL;//          
	return head;
}
 
  
 2.            ,              。
//    
void PRINT(node *p) {  while(p->next!=NULL)  { p=p->next;  printf(" %d ",p->data);  } } 
//   
int length(node *p) {  int sum=0;p=p->next;//      ,          。  while(p)  {  sum++;  p=p->next;  }  return sum; } 
//  
void insertnode(node *link,int n,int data) {  node *p, *s;  p=link;  int sum=length(link);  if(n<=0||n>sum+1)printf("error");  int i=0;  while(i {  p=p->next;i++;  }  s=(node *)malloc(sizeof(node));  s->data=data;  s->next=p->next;  p->next=s; } 
//  :        status ListInsert_L(LinkList &L,int i,ElemType e) LinkList  Linelink*  ,      
void insertnode(node *&link,int n,int data)      ,          ...C     ...  。
 
  
//  
void deletenode(node *link,int n) {  node *p=link;  int i=0;  int sum=length(link);  if(n<=0||n>sum)printf("error");  while(i {  i++;p=p->next;  }  node *q=p->next;  p->next=q->next;  free(q); } 
//       free;
//  -    
node *selectsort(node *link) {  node *p,*q,*s;//            ,        ,          int i,j,data;//data        int n=length(link);     ,              for(i=0,p=link->next;inext)//p         {  s=p;//s      ,   p    
 for(j=i+1,q=p->next;jnext)// p               if(s->data>q->data)s=q;//s      
 data=s->data;//      。  s->data=p->data;  p->data=data;  }  return link; } 
// node *reverse(node *link) { node *p1,*p2,*p3; p1=link->next; p2=p1->next; p1->next=NULL;// , while(p2) { p3=p2->next;// , p2 , p2->next=p1;//p3 p2 next *** p1=p2;p2=p3; } link->next=p1; return link; } // :http://blog.csdn.net/anton_6/article/details/6651496 // void main() { node *link=Creat(); PRINT(link);   insertnode(link,3,9);   printf("
%d ",length(link));   PRINT(link); // printf("
"); // deletenode(link,2); // PRINT(link); // node *l=selectsort(link); //node *l=reverse(link); // PRINT(l); }

좋은 웹페이지 즐겨찾기