Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define NODES 13
- struct node{
- struct node *next;
- int ts;
- int nid;
- };
- typedef struct node ncmsg;
- void printList(ncmsg *head) {
- ncmsg *temp = head;
- int p = 0;
- while (temp != NULL) {
- printf("(%d, %d)\t", temp -> nid, temp -> ts);
- p++;
- if (p % 8 == 0) printf("\n");
- temp = temp -> next;
- }
- printf("\nThe list is shown above.\n");
- }
- void insertMessage(ncmsg **head, ncmsg *newMsg) {
- if (*head == NULL) {
- printf("A.\n");
- *head = newMsg;
- } else {
- ncmsg *temp = *head;
- if (
- (newMsg -> ts) < (temp -> ts) || (
- (newMsg -> ts) == (temp -> ts) &&
- (newMsg -> nid) < (temp -> nid)
- )
- ) { // if the new message has to become the head
- printf("B.\n");
- newMsg -> next = temp;
- *head = newMsg;
- } else { // if the new message goes after the head somewhere
- printf("C.\n");
- while (
- (temp -> next) != NULL && (
- (newMsg -> ts) > (temp -> next -> ts) || (
- (newMsg -> ts) == (temp -> next -> ts) &&
- (newMsg -> nid) > (temp -> next -> nid)
- )
- )
- ) {
- temp = temp -> next;
- }
- newMsg -> next = temp -> next;
- temp -> next = newMsg;
- }
- }
- }
- void popHead(ncmsg **head) {
- if ((*head) -> next != NULL) {
- *head = ((*head) -> next);
- }
- else {
- perror("Head is the sole element of the list, popping it will destroy the list!\nAborting!\n");
- }
- }
- int main() {
- srand(11091996);
- int i, j;
- int tsArr[NODES];
- for (i = 0; i < NODES; i++) tsArr[i] = 1;
- ncmsg *temp, *head;
- /*
- head = (ncmsg *) malloc(sizeof(ncmsg));
- head -> ts = 0;
- head -> nid = 0;
- head -> next = NULL;
- */
- head = NULL;
- for (i = 0; i < 64; i++) {
- j = (rand() % NODES) + 1;
- temp = (ncmsg *) malloc(sizeof(ncmsg));
- temp -> ts = tsArr[j - 1];
- tsArr[j - 1]++;
- temp -> nid = j;
- temp -> next = NULL;
- printf("New message: (%d, %d). ", temp -> nid, temp -> ts);
- insertMessage(&head, temp);
- //printList(head);
- }
- printList(head);
- printf("Now popping off the head node...\n");
- popHead(&head);
- printList(head);
- printf("Done.\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement