天天看點

C語言:連結清單,尾插法

2019/3/29

尾插法

C語言:連結清單,尾插法
#include<iostream>
using namespace std;
typedef struct LNode {
	int data;
	struct LNode *next;
} LinkNode;
//尾插法
void CreateListR(LinkNode * &L, int a[], int n) {
	LinkNode *s, *r;
	L = (LinkNode *)malloc(sizeof(LinkNode));
	r = L;
	for(int i = 0; i < n; i++) {
		s = (LinkNode *)malloc(sizeof(LinkNode));
		s->data = a[i];
		r->next = s;
		r = s;
	}
	r->next = NULL;
}
void InitList(LinkNode * &L) {
	L = (LinkNode *)malloc(sizeof(LinkNode));
	L->next = NULL;
}
void DispList(LinkNode * L) {
	LinkNode *p = L->next;
	while(p != NULL) {
		cout << p->data;
		p = p->next;
	}
	cout << endl;
}
int main() {
	LinkNode *h;
	InitList(h);
	int a[10] = {0};
	CreateListR(h, a, 10);
	DispList(h);
	return 0;
}
           

2019/3/19

連結清單的插入結點操作:

C語言:連結清單,尾插法
C語言:連結清單,尾插法

删除結點:

C語言:連結清單,尾插法
#include<stdio.h>
#include<stdlib.h>
//初始化五個節點
struct node
{
	int data;
	node *next;
};
int main()
{
	node *head,*p1,*p2;
	int i;
	head = 0; //頭結點初始化 
	for (i = 1; i <= 5; i++)
	{
		p1 = (node *)malloc(sizeof(node)); //開辟新空間 
		p1->data = i;
		if(head == 0) 
		{
			head = p1; //頭指針指向p1結點 
			p2 = p1; //p2也指向p1結點(為"p2->next = p1"作準備) 
            //p1->next = p1不可取,因為每次p1是新的 
			//并不可以取消掉p2, 
		}
		else
		{
			p2->next = p1; //尾結點p2連上下一個新結點p1 
			p2 = p1; //p2指向新結點p1(為下一個連接配接作準備) 
            //因為每次p1都在更新,是以每次需要p2來進行中介的指向操作
		}
	}
	p2->next = 0;
	
	//删除資料為2的連結清單結點
	p1 = head;
	while(p1->data != 2)
	{
		p2 = p1;
		p1 = p1->next;	
	} 
	p2->next = p1->next; //将p1->next(也就是3)連接配接上p2->next(p2是1,p2->next被指派為3) 
	delete p1; //删除2 
	
	//輸對外連結表資料
	node *p;
	p = head;
	printf("連結清單上各結點的資料為:");
	while(p != 0)
	{
		printf("%d ",p->data);
		p = p->next;
	} 
	printf("\n");
	re
           

百度文庫上的一個PPT:https://wenku.baidu.com/view/d6c490e0ba4cf7ec4afe04a1b0717fd5370cb24a.html

C語言:連結清單,尾插法
C語言:連結清單,尾插法
C語言:連結清單,尾插法
C語言:連結清單,尾插法

繼續閱讀