Professional Documents
Culture Documents
Khởi tạo danh sách trống liên két
Khởi tạo danh sách trống liên két
Thao tác
Khởi tạo danh sách trống bằng cách gán Null cho node đầu và cuối.
Code:
struct SNode
int Info;
SNode* Next;
};
struct SList
SNode* head;
SNode* tail;
};
sl.head = NULL;
sl.tail = NULL;
Thao tác
Nếu node đầu tiên có khóa lớn hơn x, node mới sẽ trở thành nốt đầu tiên cập nhât head của danh
sách để con trỏ tới node mới
Cập nhật next của node trước node mới để con trỏ đến note mới.
Code
th1
sl.head= node;
sl.tail= node;
Else
sl.head = node ;
};
Th2
if (q != NULL)
p->next = q->next;
q->next = p;
};
Thao tác
Kiểu tra lần lượt tất cả các node khác null thì xóa đi
Code
If (sl.head != NULL)
x = node->data;
l.head = node->next;
delete node;
if (sl.head == NULL)
sl.tail = NULL;
return 1;
return 0;
}
Void xoadanhsach(Slist&sl)
Int s;
While(node != NULL)
Xoanodedau(sl,x);
Node =sl.head;
Sl.tail= NULL;
Thao tác
Code
minNode = j;
minNode = j;
minNode->data = i->data;
i->data = tmp;
Thao tác
Tạo danh sách liên kết duyệt từ phần tử đầu tới cuối vào in ra
Code
head = head->next;
Yêu cầu đếm xem trong danh sách có bao nhiêu phần tử
Thao tác
Tạo 1 vòng lâp for và 1 biến đếm ban đầu đc gán giá trị bằng không mỗi lần chạy for biến đếm cộng
thêm 1
Code
{
Int dem = 0;
If(k->next != NULL)
i++;
7. Thêm phần tử x vào danh sách vẫn theo thứ tự tăng dần
Thao tác
Lập một danh sách thêm phần tử x và sắp xếp tăng dần
Code
if(head == NULL){
head = temp;
}else{
temp->next = head;
head = temp; }
return head;
}
node* minNode = i;
minNode = j;
minNode = j;
minNode->data = i->data;
i->data = tmp;
Thao tác
Trộn 2 danh sách thành danh sách thứ 3 và sắp xếp danh sách thứ 3
Code
node* minNode = i;
minNode = j;
minNode = j;
}
}
minNode->data = i->data;
i->data = tmp;
s3.head=s1.head;
s1.tail->next=s2.head;
s3.tail=s2.tail;
sapxep(Slist&s3);
Yêu cầu kiểm tra từng phần tử nếu có thì danh sách ko rỗng và ngược lại
Thao tác
Kiểm tra nếu con trỏ đầu danh sách là null thì danh sách rỗng
Code
If(sl.head == NULL)
Else
Return 0 ;
Yêu cầu
Thao tác
Code
Position Locate(ElementType X, SList sL)
if (P->Next->Element == X)
Found = 1;
else
P = P->Next; return P;
{ Position Temp;
if (P->Next!=NULL)
Temp=P->Next;
P->Next=Temp->Next;
free(Temp);
Thao tác
So sánh phần tử với x cho tới khi tìm ra nếu không thì x không tồn tại trong x
Code
if (P->Next->Element == X)
Found = 1;
else
P = P->Next; return P;
Thao tác
Code
Node*p;
P=sl.head;
While(p!= NULL)
Cout<<’’p->info’’<<endl;
P=p->next;
Yêu cầu
Thao tác
Lần lượt so sánh nếu lớn hơn max gán thành max nhỏ hơn tiếp tục so sánh
Code
Int findmax(Node*head)
Int max=head->data ;
Node*current=head->next;
While(current!=NULL)
If(current->data>max)
Max= current->data;
Current=curent->next;
Return max;
Thao tác
Code
Int isEven(int position)
Return position % 2 == 0;
Void printfevenodd(Node*head)
Int position = 1;
Node*current= head;
While(current != NULL)
If(isEven(position))
PrintNode(current);
Position++;
Current=current->next;
}
15. Xóa các phân tử trùng nhau trong danh sách
Thao tác
Cho mỗi phần tử kiểm tra có đc lưu chưa nếu chưa thì lưu nếu có rồi thì bỏ qua
Code
In data;
Struct Node*next;
}Node;
Node*createNode(int data)
Node*newNode=(Node*)mailloc(sizeof(Node));
NewNode->data = data;
NewNode->next = NUll;
Return newNote;
Void printList(Node*head)
{
Node*temp = head;
While(temp != NULL)
Temp= temp->next;
Cout<<” “<<endl;