1. 程式人生 > >連結串列的四種基本的演算法演示

連結串列的四種基本的演算法演示

​
/*
  連結串列的四種基本的操作
  其他的演算法都可以根據這些來實現的 
*/ 
# include <bits/stdc++.h>
using namespace std;
typedef struct 	NODE {
	struct NODE *pnext;
	int data;
}NODE,*PNODE;
PNODE create_list (void); //建立一個連結串列 
void insert_list (PNODE phead,int pos,int val); //插入一個節點 
void trave_list (PNODE phead); //遍歷整個連結串列 
void delete_list(PNODE phead,int pos);// 刪除一個節點 
int main ( )
{
	PNODE phead;
	phead = create_list();
	trave_list (phead);
	insert_list(phead,4,5);
	 delete_list(phead,4);
	 trave_list (phead);
	 return 0; 
}
PNODE create_list (void)
{
	PNODE phead = (PNODE)malloc (sizeof(NODE));
	int n;
	cin>>n;
	PNODE ptail=phead;
	for (int i=1;i<=n;++i)
	   {
	   	PNODE pnew=(PNODE)malloc(sizeof(NODE));
	   	 int val;
	   	 cin>>val;
	   	 pnew->data=val;
         pnew->pnext=NULL;
         ptail->pnext=pnew;
         ptail=pnew;
	   }
	   return phead;
}
void trave_list (PNODE phead)
  {
  	PNODE p=phead->pnext;
  	while (NULL!=p)
  	{
  	   printf ("%d ",p->data);	
  	   p=p->pnext;
	  }
  	printf ("\n");
  }
void insert_list (PNODE phead,int pos,int val)
{
	PNODE p= phead->pnext;
	for (int i=1;i<pos;++i)
	   	 p=p->pnext;
	PNODE pnew=(PNODE)malloc(sizeof(NODE));
	pnew->data=val;
	pnew->pnext=p->pnext;
	p->pnext=pnew;
}
void delete_list(PNODE phead,int pos)
{
	PNODE p= phead->pnext;
	for (int i=1;i<pos-1;i++)
	    p=p->pnext;
    PNODE t=p->pnext;
    p->pnext=p->pnext->pnext;
    free(t);
}

​