数据结构

正序与逆序创建链表

2011/2/2

头插法(逆序):

void CreateList_L(LinkList &L,int n)
{
// 逆位序输入n个元素的值,建立带表头结点的单链线性表L。

	int i;
	LNode *p;
	L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;		// 先建立一个带头结点的单链表

	for(i=n;i>0;--i)
	{
		p = (LinkList)malloc(sizeof(LNode));	//生成新结点
		printf("Please input data:\n");
		scanf("%d",&p->data);					//输入元素值
		p->next = L->next; L->next = p;			//插入到表头
	}
}

尾插法(正序):

void CreateList_L (LinkList &L, int n)
{
//逆位序输入n个元素的值,建立带表头结点的单链线性表L。
	  int i;
	  LinkList p,q;	
      L = (LinkList) malloc (sizeof (LNode));
      L->next = NULL;       //先建立一个带头结点的单链表
      q = L;            //保持q指向当前表尾
      for (i = 0; i <n; i++)
      {
          p = (LinkList) malloc (sizeof (LNode));//生成新结点
		  printf("Please input data:\n");
          scanf("%d",&p->data); //输入元素值
		  p->next = NULL;
          q->next = p;   q = p; //插入到表尾
      }
} //CreateList_L